PowerAutomateでSharePointの特定リストにアイテムが作成されたときにのみ動作させたかったのですが、トリガーとしてはリストアイテムの作成または更新時しかありませんでした
そこで、以下のサイトを参考に今回はトリガーに設定せずにフロー上で判定して作成時のアクションを実行させます
-
【小ネタ】「アイテムが作成または変更されたとき」トリガーでPowerAutomateフローで起こる無限ループを回避 #SharePoint - Qiita
以下画像のようなSharePointリストでアイテムを作成または変更があったときに項目を更新するPowerAutomat ...
続きを読む
それぞれの取得した時間を日本時間にする
まずは、リストアイテムが作成された際の時間とフローの実行時の時間を取得します
しかし、UTC時間での取得となってしまうので東京時間に変換してわかりやすくします
フォーマットはわかりやすい用に「yyyy/MM/dd HH:mm:ss」にしています
リストアイテム作成日時と現日時の比較
PowerAutomateにあるless関数を用いて日時を比較し、作成時アクションを実行するようにします
ただ、今回はリストアイテムを作成してもすぐに起動するわけではないので、ある程度の余白を作って判定をします
方法としては、フロー実行日時をaddToTime関数を用いて時間を調整します。今回は、10分減らすようにします。-10という値を変数として用意しておくと後々、楽だと思います
それぞれを合わせると下記のようになりました
less(body('リストアイテムをUTCから日本時間へ変換'), addToTime(body('現在時間をUTCから日本時間へ変換'), variables('SubtractingTime'), 'Minute', 'yyyy/MM/dd HH:mm:ss'))
下画像の条件文で実行すると「いいえ」の場合に作成時のアクションを設定する形となります
-
Power Automate 「less」関数 | 誰でもできる業務改善講座
引数の2つの値を比較し、1つ目の方が小さい値であればTrue、同じか大きい値(以上)であればFalseとする関数の使い方 ...
blog-tips.sekenkodqx.jp
-
Power Automate 「addToTime」関数 | 誰でもできる業務改善講座
指定日時から指定単位で加算(未来日付を算出)または減算(過去日付を算出)する関数の使い方を紹介
続きを読む
実際に動かしてみる
今回の内容で実際に動かしてみます。わかりやすように今回はログ用の変数設定を組み込んでいます
作成日時から指定の範囲内なので「いいえ」が実行されていることが確認できます
作成日時から時間が経ちすぎているため「はい」が実行されていることが確認できます
最期に
これで「はい」の場合は更新時の処理を、「いいえ」の場合は作成時の処理をというように分けて実装することができました。ただ、今回紹介した方法だと作成後すぐになにかしらの更新が実行されるようなロジックだとうまく動かないと思いますので注意が必要です