#問題になる動作
SharePointリストで追加・更新されたアイテム自体に対して指定列にデータを入れるなどの処理をしたい場合、Power Automateの処理がフロー自身をトリガーしてしまい無限ループを起こしてしまう。
#本記事のシナリオ
① Power Automateによる更新処理のタイムスタンプを保存する列をSharePointリストに作成
② Power Automateで任意の更新処理+実行時刻のタイムスタンプをSharePointリストに保存するフローを設定
③ フローにトリガー条件を設定(①のタイムスタンプが空欄/至近の時刻でない場合*のみ実行)
*至近の時刻として設定した間隔よりも短い間隔で行われた変更操作に対してはフローが実行されないことが制約となります。
#ステップ
① SharePointリストにPower Automateによる更新処理のタイムスタンプを保存する列を作成
列名:任意(本記事では「PA_Auto_Update」)
列タイプ:日付と時刻
② Power Automateで任意の更新処理+実行時刻のタイムスタンプをSharePointリストに保存するフローを設定
utcNow()関数を使って「PA_Auto_Update」列に現在時刻のタイムスタンプが入るように設定します。
③ フローにトリガー条件を設定(①のタイムスタンプが空欄/至近の時刻でない場合のみ実行)
トリガーの「・・・」のメニューからトリガー条件を設定します。
####例
「PA_Auto_Update」の時刻が空欄、または 3分前より過去の時刻の場合のみ実行する場合のトリガー条件は以下のとおりです。
@or(empty(triggerBody()?['PA_Auto_Update']),less(triggerBody()?['PA_Auto_Update'], addMinutes(utcNow(),-3)))
SharePoint側で既定値を設定するなどで「PA_Auto_Update」の空欄を想定しない場合は下記のみでもOKです。-3で3分前の時刻を指していますので、必要に応じてご自由に調整してください。
@less(triggerBody()?['PA_Auto_Update'], addMinutes(utcNow(),-3))