はじめに
List に追加されたアイテムのお知らせに Power Automate を使ってみましたが、いろんな Q&A サイトやブログを検索しながらかなりの試行錯誤してしまったので、備忘録として調べた内容をまとめておきます。他に良い方法などあれば教えてください。
SharePoint list の新規 item をメールでお知らせ
まずは全体像から。Get items で list のアイテムを条件付き(24 時間以内に作成)で読み込んで、Apply to each で 1 つずつメール送付します。
メールでなくても Teams の Channel にポストしてもいいですね(今回は行いません)
24 時間以内に作成という条件
「サイトのアドレス」と「リスト名」は伏せますが、大事なのはフィルタークエリ。
今回は「作成日時」を元にフィルターをかけますが、変数名(?)がわからなかったので、フィルターなしで実行した結果の(JSON 形式)から見つけました。
フィルタークエリですが、ge: ~ より大きい を使用します。日付を指定する場合はこんな感じ
Created ge 2024-04-10T00:00:00Z
フィルタクエリについてはこちらのページを参考にさせてもらいました👇
参考:(Power Automate)OData フィルタで日時を指定する方法について
日付の決め方
日付を動的(実行日時を基準に)決定させるところで、少し悩んで検索しまくりましたが、結果的には以下の式に。
formatDateTime(addDays(utcNow(), -1), 'yyyy-MM-dd')
-
utcNow()
で現在(実行されるとき)の日時を取得 -
addDays()
で -1 日、すなわち 24 時間前の日時に -
formatDataTime
でクエリに使える文字列に変換
という感じです。
キャプチャ画像だと見にくいのですが、式の前後に ' があることにご注意を。ここで30分ほど解かしてしまいました。直書きするとこんな感じです。
Created ge '@{formatDateTime(addDays(utcNow(), -1), 'yyyy-MM-dd')}'
これで 24 時間以内に作成された item が取得できます。
あとはメールで送るだけ
です。
まとめ
item が作成されたタイミングで送付という方法もあると思いますが、手動で入力する List なので、作成し始めてから項目を全部埋めるまで時間もあるだろうし、少しして変更するかもしれないので、24 時間区切って送付したかった、ということで、今回の Flow となりました。
今回は日付を実行日時を基準に決定するところではまりました。同様の Flow を作成したい方の参考になりましたら幸いです。