Power Automate

【PowerAutomate】フローの処理速度を上げる方法(フィルタークエリ)

困ったこと

SharePointリストのある1行に対して更新を行いたいのに、そこに対して変更をかけようとすると「Apply to each」が出現して、リスト全部に判定を行ってしまい処理時間がかかる困難に直面したので、その解決方法を記す。

今回の対象リスト:ID=3の行に対して変更をかけたい。
PowerAutomateで条件を使ってそれを実装していく。
勝手にApply to eachでくくられる

これは「ID」に対して1行ずつ判定を行う必要があるためApply to eachの出現は当然といえば当然の動作なのだが、実際に実行してみるとこれが非常に時間がかかる。

検索時間の高速化に挑戦

よってこれを改善してみる!ヒントはこれ

上記の例の作成をするとご丁寧にAutomateが警告をくださるのでそれを実装してみる。
具体的には「複数の項目の取得」時点でフィルタークエリという機能を使ってID=3の行のみ取得するのだ。(こうすることでApply to eachは出現するものの対象は1行しかないため高速な処理が行えるのである)

フィルタークエリの使い方具体的方法

上記の場所で設定する。

このように記載するとID=3の行のみ取得できる

ID eq 3の意味だが ID列が3に等しい(eq)という意味である。
私はなじみのない記載方法だが、他にも比較級はたくさんあるのでDOCSを引用しておく。
参考:サポートされる演算子(MS公式DOCS)

ここでややこしいのは(というより初心者が混乱するのは)IDがAutomate側にしっかり認識されているかどうかが分からない点だろうか。でもこの方法であればできるので安心してほしい。ちなみにリストの列名が日本語だと大変めんどくさい方法になるので新規でローマ字で列を作成するかググってほしい。

さらなる高みへ

今回はID=3と固定値で紹介したが、実際のところ3ではなく変数として実装したいと皆さん考えているだろうと思うので最後にそれを紹介する。

その方法は「変数」を使うというものだ。

「複数の項目を取得」の前に「変数を初期化する」を入れ込んで3を変数に格納する形にする。その次にフィルタークエリでその変数と比較する。
こうすることによって変数の「値」の記入方法を工夫することで様々なフィルターをかけることができるのである!