Power Automateで無限ループを回避する方法

こんにちは、あおいです。

さて、プログラミングにおいて、不具合や不測の事態により無限ループが発生してしまい、メモリを食い潰してプログラムやシステムに支障をきたす場合があります。

Power Automateでも無限ループが発生してしまうケースが存在します。

例えば、以下のようなフローをご覧ください。




更新トリガーでアイテムを更新するアクションをした場合、その処理をフロー自身がトリガーして無限ループを起こしてしまいます…😢



そこで、今回はPower Automateで無限ループを回避する方法を紹介したいと思います。

Dataverseトリガーの場合

詳細オプションに行のフィルターが用意されているので、絞り込み条件を追加します。
トリガー条件を「行が追加・更新・削除されたら」のように無条件ではなく、「○○列の値が△△の行が追加・更新・削除されたら」のように条件を追加することで無限ループを回避出来ます!



行のフィルターのフィルタークエリの書き方についてはこちらの記事を参考にしてみてください。
【Power Automate】Dataverseフィルタークエリの書き方まとめ | cloud.config Tech Blog



SharePointトリガーの場合

Dataverseトリガーと違って、SharePointトリガーには詳細オプションに行のフィルターが用意されていません。
事前に用意した以下のSharePointリストを参考にして、無限ループを回避するには以下の手順で操作します。




① 「データ操作:作成」アクション内に、式タブからtriggerBody関数を選択してセットする。





② フロー実行をして得られる値の中身を確認する。





③ SharePointトリガーの三点リーダーを押して設定を選択する。





④ トリガー条件に論理演算子を用いて任意の条件式を入力する。※トリガー条件式の先頭に@を必ず付ける。



Power Automateの式関数の詳細についてはこちらのMicrosoft公式ドキュメントを参考にしてみてください。
式関数のリファレンスガイド – Azure Logic Apps | Microsoft Docs



試しに適当なリストの項目値を更新して、フローを実行して確認してみましょう!



フローデザイナーを見ると、、、

無限ループを起こすことなく正常に動作しています!


今回はPower Automateで無限ループを回避する方法について紹介させていただきました。
少しでもお役に立てれば幸いです。