Power Automateで「複数の項目の取得」アクションを利用する際、フィルター クエリを利用すると、設定した条件に一致したアイテムだけを取得することが出来ます。
ですが、SharePointリストにて集計列をフィルター クエリで利用しようとしたところ、利用する事が出来ませんでした。
今回は、集計列をフィルター クエリで利用したい場合の回避策をご紹介します。
※集計列は、SharePoint リストで他の列の値を用いて計算できる列です。関数を利用することもできます。(参考:リストの一般的な数式の例 - Microsoft サポート)
フィルター クエリについて
Power Automateでは、「項目の取得」アクションや「複数の項目の取得」アクションを利用して、SharePointリスト内のアイテムを取得することが可能です。
「複数の項目の取得」アクションはアイテム単体を抜き出すのではなく、リスト内のアイテムを全て取得することが出来ます。
ですが、デフォルトではリスト内すべてのアイテムが取得されるので、アイテム数が多い場合に処理時間がかかってしまいます。
また、「条件を指定して特定のアイテムを抜き出したい」という要件もあるかと思います。
そのような場合に役に立つのが「フィルター クエリ」機能です。
この機能を使うことで、特定条件に一致するアイテムを抜き出すことが出来ます。
フィルター クエリ利用時のエラー
便利な「フィルター クエリ」機能ですが、今回、リスト内の集計列をフィルター クエリとして利用しようとした場合、下記のようなエラーになってしまいました。
種類 'Calculated' のフィールド 'total'(←''内は該当列の名前が入ります) は、クエリのフィルター式には使えません。
このような場合の回避策をご紹介します。
回避策
ご紹介する回避策は「集計列の値を格納する新規列を作成し、新規列に集計列の値をコピーする」です。
今回は既にSharePointリストでアイテムと集計列が存在している場合を前提とします。
ここから手順を記載します。
- SharePointリスト上にコピー用の新規列を作成します。今回は集計列の数値をフィルター クエリで利用したいため、数値で新規列を作成します。
- Power Automateで「複数の項目の取得」アクションを作成します。
- 「項目の更新」アクションを作成します。先ほど新規作成したコピー用に新規列に集計列の値を指定します。
指定する集計列のデータは式を挿入して記載します。式には以下のように記載します。
items('Apply_to_each')?['「集計列の名前」']
「集計列の名前」にはそのまま集計列の名前を記載してください。既に引用した画像でいうと集計列の名前は「total」なので、記載する式は以下です。
items('Apply_to_each')?['total']
これにより、集計列「total」列の値が「total_copy」列へコピーされます。
- 新たに「複数の項目の取得」アクションを作成します。「total_copy」列は集計列ではありませんが、集計列の値がコピーされています。そのため、「total_copy」列でフィルター クエリをかけることで、集計列の値でフィルター クエリをかけたことと同義になります。
このようにして、該当のアイテムのみ抜き出しそのアイテムのみを編集したり、Teamsへ通知したりすることが出来ます。
それぞれ利用したいアクションを後続に付けてください。
おわりに
フィルター クエリで集計列を利用したい場合の回避策をご紹介しました。
集計列の値でフィルター クエリを利用したい場合に参考になれば幸いです。