Power Automate PR

[Power Automate]フィルタークエリの書き方を徹底解説

記事内に商品プロモーションを含む場合があります


Power Automateのフィルタークエリの様々なケースの書き方について説明します。

フィルタークエリは、SharePointコネクタの「複数の項目の取得」や、Excel Online for Businessコネクタの「表内に存在する行を一覧表示」アクションなどで利用できるフィルター機能です。

Power Automateを体系的に学習したい方は、下記もご覧ください。

承認フローについて詳細な手順を知りたい方は、下記もご覧ください。

Teamsを利用して組織内のコミュニケーションを強化したい方は下記もご覧ください。

【こちらもおすすめ】Teamsお役立ちノウハウ集

・【事例付き】Teamsを活用したマネジメントTIPS集
・【マネージャー向け】Teamsアプリを活用した「誰が何を知っているか」の集約・共有 事例集
・【Teamsアプリ活用事例集】メンター制度を置き換えて新人・異動者の育成を効率化する方法
・【問い合わせ管理でお困りの方向け】問い合わせ対応・ナレッジ蓄積へのTeams活用事例集
・【マネジメント・業務把握にお困りの方向け】マネジメント・報告業務へのTeams活用事例集
・【Teamsアプリを活用事例集】週報を自動で収集しサマリー&フィードバックする方法とは

Power Automateのフィルタークエリの概要

フィルタークエリは、下記のような条件式での指定を基本とします。

左辺 記号 右辺

指定できる記号には下記があります。

記号説明
eq等しい
ne等しくない
ge以上
gt超える
le以下
lt未満

下記のSharePointリストを例に、様々なケースのフィルタークエリの使い方を説明します。

SharePointリストの列名についての注意

フィルタークエリに記載する列名は、見た目の列名ではなく、SharePointの内部名を利用します。

内部は「リストの設定」から確認できます。

リストの設定の下記から確認したい列をクリックします。

URLの末尾のField=の部分を確認します。

Category列の場合、下記のように同じくCategoryです。

In charge列の場合、下記のようにInchargeになります。

また、日本語の列名で作成した場合は、_xではじまる列名になります。

下記のような例です。

この場合は、OData_を先頭に付与して、OData__x5358__x4fa1_という列名にします。

内部名は最初に列を作成した際に、SharePoint側で自動で命名されます。基本的に後からは変更できません。

SharePointリストの時刻を扱う場合の注意

SharePointリストの日時をPowerAutomateで読み込んだ際は、UTC時刻になります。つまり、時刻が9時間マイナスされた状態になります。(下記イメージ)

Power Automateでは、日時は上記の表記になります。末尾のZは、UTC時刻を意味します。

反対にPower Automate側の時刻は、SharePointリストでは9時間プラスされます。(下記イメージ)

日付でフィルタする際に、この理解がとても重要になりますので頭に入れておいてください。

〇〇と等しい:eq (equal)

数値の例

下記のようにQuantity列が100の行のみにフィルターされます。
(下記は、結果をExcelに出力したものです)

文字列の例

文字列の部分はシングルクォーテーションで囲む必要があります。

下記のようにTitle列が”ボールペン(黒)”の行のみにフィルターされます。

日付の例

日付の場合は下記のようになりますが、確認した限りでは正しく動作しませんでした。(何もヒットしない)
理由は、時刻も含めてピッタリ同じでないといけないためです。

回避策として下記でフィルタできます。(2021/4/13でフィルタしたい場合)
15:00:00にしている理由は、概要でお伝えしたとおり、SharePoint側では9時間プラスされるためです。
日付の部分はシングルクォーテーションで囲む必要があります。

下記のようにDate列が”2021/4/13″の行のみにフィルターされます。

〇〇と等しくない:ne (not equal)

数値の例

下記のようにQuantity列が100以外の行のみにフィルターされます。

文字列の例

下記のようにTitle列が”ボールペン(黒)”以外の行のみにフィルターされます。

日付の例

日付の場合は下記のようになりますが、確認した限りでは正しく動作しませんでした。(全てヒットしてしまう)
理由は、時刻も含めて全く異なる値でないといけないためです。

回避策として下記でフィルタできます。(2021/4/13以外でフィルタしたい場合)
15:00:00にしている理由は、概要でお伝えしたとおり、SharePoint側では9時間プラスされるためです。
日付の部分はシングルクォーテーションで囲む必要があります。

下記のようにDate列が”2021/4/13″以外の行のみにフィルターされます。

〇〇以上:ge (greater than equal)

数値の例

下記のようにQuantity列が200以上の行のみにフィルターされます。

文字列の例

動作はしますが、利用シーンが無いため割愛します。

アルファベットだけ抜き出したいときなどは工夫すれば使えるかもしれません。

日付の例

07:00:00にしているため、SharePoint側では16:00:00になります。
日付の部分はシングルクォーテーションで囲む必要があります。

下記のようにDate列が”2021/8/11″以降(2021/8/11 16:00:00以降)の行のみにフィルターされます。
(2021/8/11の行は、今回の例では内部的には2021/8/11 16:00です。以降なので含んでいます。)

〇〇を超える:gt (greater than)

数値の例

下記のようにQuantity列が200を超えるの行のみにフィルターされます。

文字列の例

動作はしますが、利用シーンが無いため割愛します。

アルファベットだけ抜き出したいときなどは工夫すれば使えるかもしれません。

日付の例

07:00:00にしているため、SharePoint側では16:00:00になります。
日付の部分はシングルクォーテーションで囲む必要があります。

“2021/8/11”より後(2021/8/11 16:00:00より後)の行のみにフィルターされます。
(2021/8/11の行は、今回の例では内部的には2021/8/11 16:00のためヒットしません。)

〇〇以下:le (less than equal)

数値の例

下記のようにQuantity列が200以下の行のみにフィルターされます。

文字列の例

動作はしますが、利用シーンが無いため割愛します。

アルファベットだけ抜き出したいときなどは工夫すれば使えるかもしれません。

日付の例

07:00:00にしているため、SharePoint側では16:00:00になります。
日付の部分はシングルクォーテーションで囲む必要があります。

下記のようにDate列が”2021/8/11″以前(2021/8/11 16:00:00以前)の行のみにフィルターされます。
(2021/8/11の行は、今回の例では内部的には2021/8/11 16:00です。以前なので含んでいます。)

〇〇未満:lt (less than)

数値の例

下記のようにQuantity列が200未満の行のみにフィルターされます。

文字列の例

動作はしますが、利用シーンが無いため割愛します。

アルファベットだけ抜き出したいときなどは工夫すれば使えるかもしれません。

日付の例

07:00:00にしているため、SharePoint側では16:00:00になります。
日付の部分はシングルクォーテーションで囲む必要があります。

“2021/8/11”より前(2021/8/11 16:00:00より前)の行のみにフィルターされます。
(2021/8/11の行は、今回の例では内部的には2021/8/11 16:00のためヒットしません。)

〇〇で始まる文字列:startswith

〇〇で始まる文字列のみにフィルターします。startswithは、すべて小文字です。

下記のようにTitle列が”ボール”ではじまるの行のみにフィルターされます。

〇〇を含む文字列:substringof

〇〇を含む文字列のみにフィルターします。substringofは、すべて小文字です。
startswithの時とは引数の順番が反対です。

下記のようにTitle列に”(黒)”を含む行のみにフィルターされます。

変数を利用した場合の例

下記のように、変数動的コンテンツを組み合わせてフィルタできます。

文字列や日付の場合は、前後にシングルクォーテーションが必要です。

内部名の動作の確認

列名と内部名が異なる場合

概要で説明したとおり、In charge列の内部名はInchargeです。

そのため、見た目の列名ではなく内部名で下記のように指定します。

下記のように、In charge列が”佐藤”のみにフィルタされます。

日本語の列名の場合

下記のような、日本語の列名の場合で試してみます。

「単価」列の内部名は下記の通り、_x5358__x4fa1_です。

先頭にOData_をつけて指定します。(大文字小文字に注意)

下記のように、単価列が100を超える行のみにフィルタされます。

複数条件の場合(And条件)

複数条件をANDでつなげたい場合は、下記のように and を使います。

下記のように、Title列に”(黒)”を含む、かつ、Quantity列が100の行のみにフィルタされます。

複数条件の場合(Or条件)

複数条件をORでつなげたい場合は、下記のように or を使います。

下記のように、Title列に”(黒)”を含む、または、Quantity列が100の行のみにフィルタされます。

うまく動かない場合の列名の確認方法

Power Automateの設定を変更することで、フィルタークエリを簡易的な設定方法に変更できます。

右上の歯車アイコンをクリックします。

「すべての Power Automate 設定を表示する」をクリックします。

実験的な機能をオンにし、「保存」をクリックします。

そうすると、下記のようにフィルタークエリが簡易的な設定方法に変わります。

左辺の選択肢を見ると、列名が表示されます。下に記載されているのが内部名なので確認できます。

また、下記のアイコンをクリックすることで、従来の書式に切り替えれます。

切り替えると、下記のように従来の書式でどう記載すればいいかがわかります。

この機能は、実験的な機能ということで、変更・中断・消滅する可能性がありますと記載されています。

そのため、一時的な確認用として利用し、本番環境では実装しないことをおすすめします。

フィルタークエリでできないこと

フィルタークエリではできないことがいくつかあります。

・Power Automateの通常の関数は利用できません。(StartsWith、EndsWith関数など)
※startswithとStartsWith関数は別物です。

・SharePointリストの計算式の列はフィルタークエリで利用できません。

・SharePointリストの複数行テキストの列はフィルタークエリで利用できません。

まとめ:もうフィルタークエリで迷わない

Power Automateのフィルタークエリの様々なケースについて説明しました。

他のケースの実装方法も知りたいという方は、お問い合わせからご連絡ください。

Power Automateを体系的に学習したい方は、下記もご覧ください。

承認フローについて詳細な手順を知りたい方は、下記もご覧ください。

Teamsを利用して組織内のコミュニケーションを強化したい方は下記もご覧ください。

【こちらもおすすめ】Teamsお役立ちノウハウ集

・【事例付き】Teamsを活用したマネジメントTIPS集
・【マネージャー向け】Teamsアプリを活用した「誰が何を知っているか」の集約・共有 事例集
・【Teamsアプリ活用事例集】メンター制度を置き換えて新人・異動者の育成を効率化する方法
・【問い合わせ管理でお困りの方向け】問い合わせ対応・ナレッジ蓄積へのTeams活用事例集
・【マネジメント・業務把握にお困りの方向け】マネジメント・報告業務へのTeams活用事例集
・【Teamsアプリを活用事例集】週報を自動で収集しサマリー&フィードバックする方法とは