M365開発者プログラムに登録してしばらくして利用期間満了になるはずだったのですが、わりかし使っているので夏頃まで利用期間が延長されました。
さて、PowerAutomateのSharePointのアクション内でフィルタークエリというオプションが使えるのですが、いまいち使い方がわからなかったのでメモとして残します。
今回は時間を指定(ある期間を指定)してその値を抽出してみたいと思います。
リストから複数項目の取得をする際に、特定の条件で抽出したい場合があります。今回は「1週間以内に編集された」リストアイテムを抽出してみたいと思います。ひとまず、フィルタークエリは以下のようにすればOKです。
Modified ge '@{addDays(utcNow(),-7,'yyyy-MM-ddTHH:mm:ssZ')}'
SharePointのリストは内部名を持っていて、どんなリストの1項目にも必ず「Modified」が存在し、そこには最終編集日が記録されています。なので、そいつと1週間前の日付を比較して抽出する(今回の条件式は、「編集日が1週間前の日付より新しいもの」という意味)、といった流れになります。もちろん「Modified」ではなく、自前で用意した列に登録した日付型でもOKです。
@移行の構文は、式となりますので、直打ちではなくポップアップから入力してください。そして重要なのがシングルクォーテーションで囲むこと。忘れるとエラーになります。内容としては、現在時刻から-7日をyyyy-MM…のフォーマットで出力するとういことになりますが、あまり難しく考えずそのままコピペで使えばOKです。
使用例
1日以内に編集された項目を抽出するフィルタークエリ
Modified ge '@{addDays(utcNow(),-1,'yyyy-MM-ddTHH:mm:ssZ')}'
3時間以内に編集された項目を抽出するフィルタークエリ
Modified ge '@{addHours(utcNow(),-3,'yyyy-MM-ddTHH:mm:ssZ')}'
1日以内に新規作成された項目を抽出するフィルタークエリ
Created ge '@{addDays(utcNow(),-1,'yyyy-MM-ddTHH:mm:ssZ')}'
*Createdも内部名です
1日より前に編集された項目を抽出するフィルタークエリ
Modified le '@{addDays(utcNow(),-1,'yyyy-MM-ddTHH:mm:ssZ')}'
*比較演算子leは「以下」を示します。
SharePoint複数項目取得後の処理について
複数項目取得できたはいいですが、それを使う方法がややこしい。
返ってくるのはJSON形式なので、「JSONの解析」をして必要項目の抽出、さらに抽出した項目を変数に入れて繰り返し条件をつけて、項目を取り出していく、、、といった面倒な手順が必要になります。「Apply to each」の挙動に謎が多く、動的なコンテンツとして値を入れられなかったりしましたが、なんとか抽出したSharePointリストの複数行をメールに書き出すことができました。ここに関しては試行錯誤するしかなさそうです。