PowerAutomateを使って、
SharePointリストから条件に合致するアイテムの件数を取得する方法を調べました。
以下にまとめます。
大きな流れ
- 定時に実行され、(
繰り返し
) - SharePointリストを取得し、(
リストの取得
) - 該当するアイテムを取得し、(
複数の項目の取得
) - アイテムの件数を変数に設定し、(
変数を初期化する
) - 条件を設定し、
- 最後のアクションを実行する。(画像の例では、Teamsに通知しています。)
3と4の箇所でひと手間必要になります。
環境
以下のようなSharePointリストがあるとします。
列報告日
が、今日の日付かどうかという条件をPowerAutomateでは設定する予定です。
フロー作成
繰り返し
好きな時間を設定しましょう。
繰り返し
以外のトリガーでも構いません。
(SharePoint) リストの取得
SharePointのリストを設定しましょう。
(SharePoint) 複数の項目の取得
ここが少し重要です。
フィルタークエリに条件を設定して、
合致するリストアイテムを取得します。
例えば列Dateという英語であれば、Date eq '2022-02-23'
などとすれば良いです。
ただし日本語の場合そのままではエラーとなるため、Odataに則ったIDを設定する必要があるようです。
該当SharePointリストのページから、
右上の歯車アイコン>リストの設定
>列
>該当の列名をクリックしましょう。
今回の場合は報告日
です。
開かれたページのURLのField=より後ろの部分が必要になります。
これとOData_
とを合体させて、OData__x5831__x544a__x65e5_
というような文字列を作成しましょう。
作成された文字列と現在日時とを合致するかのフィルタークエリは以下のようになります。
OData__x5831__x544a__x65e5_ eq 'formatDateTime(addHours(utcNow(),9),'yyyy-MM-dd')'
PowerAutomateの比較演算子
【Microsoft Flow】フローで日本時間の現在時刻を取得する式
変数を初期化する
一つ前のステップで複数のリストアイテムを取得したため、
関数length
でアイテムの長さを数えましょう。
設定値は以下のようになります。
項目 | 値 |
---|---|
名前 | テスト(※何でも良いですが、後ほど使います。) |
種類 | 整数 |
値 | length(body('複数の項目の取得')?['value']) |
今回は日付文字列なので整数としましたが、条件によっては真偽値(boolean)などでも良いです。
条件~最終アクション
変数テスト
が0より大きいかどうか比較する条件を作成し、
はいの場合はTeamsで通知するようにします。
通知アクションの部分は各々の環境で読み替えてください。
終了!!
まとめ
以上がSharePointリストの件数を取得する方法です。
件数を取得する部分で、日本語列名の設定と関数の使い方は注意が必要ですね。
もう少しそういった部分が直感的になれば、ローコードツールはもっと流行ると思うんんですけどね。