ADVERTISEMENT

【Power Automate】Do untilループで困った時の実行履歴から原因を読む方法

【Power Automate】Do untilループで困った時の実行履歴から原因を読む方法
🛡️ 超解決

Power AutomateのDo untilループは、指定した条件が満たされるまで処理を繰り返す便利なアクションです。しかし、無限ループに陥ったり、意図せず早く終了したりと、トラブルに遭遇することも珍しくありません。原因を特定するには、フローの実行履歴を詳細に確認するのが最も効果的です。本記事では、Do untilループに関する問題を実行履歴から読み解く具体的な方法を、実務に沿って解説します。

【要点】この記事で確認すること

  • 最初に見る場所: ループアクションの「カウント」と「タイムアウト」設定、各イテレーションの出力値
  • 切り分けの軸: 条件式がTrue/Falseのどちらで評価されたか、ループ内の変数が正しく更新されているか、外部コネクタの応答時間
  • 注意点: 会社のポリシーでループの最大回数やタイムアウトが制限されている場合があるため、管理者設定を変更する前に確認が必要です

ADVERTISEMENT

1. Do untilループの基本とよくあるトラブル

Do untilループは、「条件がTrueになるまで」アクションを繰り返し実行します。ループ内ではカウンター変数をインクリメントしたり、外部システムの状態をポーリングしたりするのが一般的です。よくあるトラブルとして、ループが終了しない(無限ループ)、条件が満たされる前にタイムアウトで停止する、ループの回数が多すぎて実行が遅くなる、などがあります。これらの原因は、条件式の記述ミス、変数の更新漏れ、外部サービスの応答遅延、Power Automateプラットフォームの制限値到達など多岐にわたります。実行履歴を確認することで、どのイテレーションで問題が発生したのかを特定できます。

2. 実行履歴を開く手順

まずは問題のフローの実行履歴を確認する方法を説明します。以下の手順で実行履歴を開いてください。

  1. Power Automateポータル(make.powerautomate.com)にサインインします。
  2. 左側メニューから「マイフロー」をクリックし、対象のフローを選択します。
  3. フローの詳細画面で、上部メニューの「実行履歴」タブをクリックします。
  4. 一覧から問題の実行(ステータスが「失敗」「キャンセル済み」「タイムアウト」のもの)を選択します。
  5. 実行詳細画面で「アクション」セクションまでスクロールし、Do untilループのアクション(例:Apply to each内のDo until)を展開します。
  6. ループ内の各イテレーション(繰り返し)の入力値と出力値を確認します。特にループ条件の評価結果(True/False)と、カウンター変数の値をチェックしてください。

実行履歴は過去30日間保持されますが、フローごとの履歴数に制限があるため、重要な実行はこまめにエクスポートしておくと安心です。

3. 実行履歴の読み方:ループの各イテレーションを確認する

実行履歴で最も重要なのは、Do untilループの各イテレーションがどのように進行したかです。ループアクションを展開すると、以下の情報が表示されます。

3.1 イテレーションの入力と出力

各イテレーションでは、ループ開始時の変数の値や、条件式に使われた値が入力として記録されます。出力には、条件の評価結果(True/False)と、ループ内で行われたアクションの結果が含まれます。例えば、条件式が「@equals(variables(‘counter’), 5)」の場合、ループを繰り返すたびにcounterの値が出力に表示されるため、どのタイミングで条件がTrueになったかが一目でわかります。

3.2 カウントとタイムアウトの確認

Do untilループの設定には「カウント(最大反復回数)」と「タイムアウト(最長時間)」があります。デフォルトはカウント60回、タイムアウト1時間(グローバル環境によって異なる)です。実行履歴のループアクションの詳細には、実際にループが実行された回数と、タイムアウトに達したかどうかが表示されます。もしループ回数がカウント上限に達している場合は、設定値の見直しが必要です。

3.3 失敗したアクションの特定

ループ内の特定のアクションが失敗した場合、そのイテレーションに赤いエラーアイコンが表示されます。エラーコードとメッセージが出力されるため、それを基に原因を特定できます。例えば、SharePointの「アイテムの取得」アクションが404エラーを返しているなら、リストやアイテムIDが間違っている可能性があります。

4. 条件式が正しく評価されないケース

Do untilループで最も多い問題は、条件式が期待通りに評価されないことです。実行履歴を見ると、条件式の評価結果は各イテレーションの「出力」に含まれます。例えば、条件を「@equals(variables(‘status’), ‘完了’)」としているのに、ループが一向に終了しない場合、実行履歴でstatus変数の値が「完了」になっているか確認してください。よくある失敗パターンとして、変数の更新をループ内で行い忘れる、大文字小文字の不一致、式の構文エラー(括弧の閉じ忘れなど)が挙げられます。また、条件式に複数条件をANDやORでつなぐ場合、「@and(…, …)」のように正しく記述されているかも確認します。

失敗パターンの具体例:あるユーザーがループでSharePointリストの承認状況を確認しようとして、「@equals(outputs(‘承認状態’), ‘承認済み’)」と設定しましたが、リストの列名が実際は「承認状態」ではなく「ApprovalStatus」だったため、条件が常にFalseになり無限ループが発生しました。実行履歴で「承認状態」の出力が空欄であることに気づけば、列名の誤りにすぐ気づけます。

5. タイムアウトと無限ループの見分け方

実行履歴を見れば、ループが「タイムアウト」で終了したのか、それとも無限ループを検知して強制終了されたのかを区別できます。Power Automateでは、カウント上限を超えた場合や、タイムアウト時間を超過した場合にループが停止します。

状況 実行履歴の表示 考えられる原因
ループが正常に終了 条件がTrueになり、ループ回数が設定より少ない 正常動作
カウント上限に達した ループ回数がカウント設定値と同じ、ステータスは成功(ただしループは上限で止まった) 条件が最後までTrueにならなかった、カウント設定が小さすぎる
タイムアウトエラー ループアクションが「タイムアウト」アイコン、ステータスは失敗 外部API応答が遅い、ループ内の処理が重い、タイムアウト設定が短すぎる
無限ループ検知 ループアクションが「スキップ」またはエラー、ステータスは失敗 条件が常にFalse、変数更新忘れ、外部サービスの状態が変わらない

注意点として、カウント上限に達した場合でもフローのステータスは「成功」となることがあります。これは、ループは設定上限まで実行されたものの、条件が満たされないまま終了したことを意味します。そのような場合は、ループの終了後に変数の値を調べるなどして、条件が真になるべきタイミングを再検討してください。

6. 管理者へ確認する情報

Do untilループが想定通り動かない場合、フロー作成者だけで解決できないケースがあります。以下の点を管理者に確認してください。

  • Power Automateの制限値: 環境によっては、ループの最大反復回数やタイムアウトがデフォルトより厳しく設定されている場合があります。管理者に現在の制限値と変更の可否を確認してください。
  • コネクタのリクエスト制限: SharePointやOutlookなど、各コネクタにはAPIリクエストの回数制限があります。ループ内で大量のリクエストを送ると制限に引っかかる可能性があります。
  • 条件式で利用する変数のスコープ: ループ内で変数を初期化すると、毎回リセットされることがあります。変数はループの外で初期化するように設計してください。

管理者に伝えるべき情報として、実行履歴のスクリーンショットや、ループの設定値(カウント、タイムアウト)、発生時刻などを準備しておくとスムーズです。

7. よくある質問

Q. Do untilループが一回も実行されないのはなぜ?
初期条件がすでにTrueである可能性があります。例えば、ループ開始時に変数が条件を満たしている場合、ループは一度も実行されずに終了します。実行履歴でループアクションの出力が「スキップ」となっていれば、これに該当します。

Q. ループの最大反復回数を増やすには?
Power AutomateデザイナーでDo untilループの設定を開き、「カウント」の値を変更します。デフォルトの60から最大5000まで設定可能です。ただし、あまり大きな値にするとフローの実行時間が長くなり、タイムアウトやコスト増加につながるため注意してください。

Q. 実行履歴に「式の評価中に内部エラーが発生しました」と表示される。
条件式の構文が間違っている可能性が高いです。式に使用する関数名や括弧の数をもう一度確認してください。また、動的な値(Dynamic content)が正しく参照されているかもチェックしてください。

8. まとめ

Do untilループのトラブルシューティングには、実行履歴の詳細な確認が不可欠です。各イテレーションの入力・出力を追うことで、条件式の誤りや変数の更新漏れ、外部サービスの応答遅延などを特定できます。また、カウントやタイムアウトの設定値が適切かどうかも定期的に見直すべきです。会社のポリシーによる制限がある場合は管理者と連携し、フローの安定稼働を目指してください。実行履歴を効果的に活用して、ループ関連の問題を素早く解決しましょう。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。

ADVERTISEMENT