Power Automateのエラーハンドリング完全ガイド【後編】運用で失敗しないための重要ポイント

Power Automate
スポンサーリンク

みなさん、こんにちは!業務ハックLabのようです。

この記事は「Microsoft Power Automate Advent Calendar 2025」の12月24日担当分の記事です。

前編・中編と、Power Automateのエラーハンドリングについて解説してきました!

ここまでで、エラーハンドリングの実装方法は完璧です!

(エラー通知も、詳細情報も取得できるようになりましたね)

でも、実は運用していく上で、知っておかないとハマる落とし穴がいくつかあるんです。

今回の後編では、そんな「運用で失敗しないための重要ポイント」を解説していきます!

これを知っておくだけで、思わぬトラブルを回避できます。

(特に1つ目の「終了」の話は、超重要!)

では、早速いってみましょう!


運用で失敗しないための重要ポイント

最後は必ず「終了」させる

これ、めちゃくちゃ重要なポイントです!

(知らないと、エラーが「成功」になってしまう…)

落とし穴: Catchで処理すると「成功」になる

前編で作ったTry-Catchパターンには、実は大きな落とし穴があります。

それは、Catchスコープでエラーを処理してしまうと、Power Automateは「エラーは解決した」と判断してしまうということです!

どういうことか?

例えば:

  1. Tryスコープで何かのアクションが失敗する
  2. Catchスコープが実行されて、エラー通知を送る
  3. Catchスコープが成功する
  4. フロー全体のステータスが「成功」になる

え、エラーなのに「成功」!?

(これ、初めて見た時は「なんで!?」ってなりました)

つまり、実行履歴を見ると「成功」と表示されてしまうので、エラーが起きたことが分かりにくくなるんです。

(緑色のチェックマークが付いちゃう)

「あれ?エラー通知は来てるのに、実行履歴は全部成功になってる…どゆこと?」

って、しばらく混乱しましたね(笑)

対策: 終了アクションを使う

この問題を解決するには、「終了」アクションを使います。

「終了」アクションは、フローを強制的に終了させて、指定したステータスを設定できるアクションです。

実装方法:

  1. Catchスコープの最後に「終了」アクションを追加する
  2. ステータスを「Failed」に設定する
  3. エラーコードとメッセージを入力する(任意)

設定例:

  • ステータス: Failed
  • コード: ErrorInFlow
  • メッセージ: Try スコープでエラーが発生しました

これで、実行履歴にも「失敗」と正しく記録されるようになります!

(赤いバツマークが付いて、ちゃんとエラーだと分かる)

補足:「終了」の位置が重要

終了アクションは、必ずCatchスコープの最後に配置してください。

なぜなら、終了が実行されると、その時点でフローが終了するからです。

つまり、こんな順番になります:

【Catch スコープ】
  1. workflow()で情報取得
  2. result()でエラー詳細取得
  3. Teams通知を送る
  4. エラーログをSharePointに記録
  5. 終了(Failed) ← 最後に配置!

もし終了を最初に置いてしまうと、通知もログ記録も実行されずに終了してしまいます!

(これも初心者がハマりがちなポイント)

成功時の処理はどうする?

「じゃあ、Tryが成功した時はどうするの?」

って思いますよね。

Tryが成功した場合は、Catchスコープは実行されないので、終了も実行されません。

だから、フロー全体のステータスは「成功」のままです。

これで、エラーの時だけ「失敗」、正常時は「成功」と、正しく記録されるようになります!


並列処理の注意点

もう1つ、知っておくべき重要なポイントがあります。

それは、並列処理と変数の相性についてです。

並列処理(コンカレンシー制御)とは?

「それぞれに適用」アクションには、「コンカレンシー制御」という設定があります。

これをオンにすると、ループを並列実行できて、処理が高速化します!

例えば、100件のデータを処理する時、1件あたり1秒処理に時間が掛かるとすると:

  • 並列実行オフ: 1件ずつ順番に処理 → 100秒かかる
  • 並列実行オン(並列度5): 5件ずつ同時に処理 → 20秒で完了

単純計算で1/5に!!

めちゃくちゃ速くなりますよね!
実際フローで動かしてみた結果がこちら

【処理実行条件】
 データ件数:10件
 処理時間:1件あたり5秒で処理

並列実行オフ

並列実行オン(並列度5)

非常に便利なのですが、大きな罠があります。

並列処理中に変数を使うと予期しない結果になる可能性あり

Microsoft Learnの「変数の値を格納および管理する」(リンク)では、以下のように記載されています。

 警告

既定では、「それぞれに適用」ループの各反復は順番に実行されます。 ループの反復を並行して実行して、パフォーマンスを向上させることができます。 「それぞれに適用」ループで変数を使用する場合、ループ変数が予測可能な結果を返すことが重要であれば、ループの繰り返しを順次実行する必要があります

なんか難しい言い回しになっていますがつまるところ「それぞれに適用する」内で変数を設定すると予期しない結果になる可能性があるということですね。

Microsoftは推奨していない使い方はできるだけ避けたほうが良いと思います。

補足:SharePointリストへの書き込みも注意

実は、並列処理でSharePointリストに大量書き込みをすると、スロットリング(制限)にかかることがあります。

その場合は:

  • 並列度を下げる(例: 50 → 10)
  • 各アクションにリトライポリシーを設定する
  • または、バッチ処理を使う

こういった工夫が必要です。


まとめ:信頼性の高いフローで自動化を加速させよう

はい、如何でしたでしょうか?

3回の連載を通して、Power Automateのエラーハンドリングについて、かなり深いところまで解説してきました!

この3回の記事で学んだこと

前編:

  • 実行条件の構成で、エラー時のルートが作れる
  • スコープを使えば、Try-Catch構造でまとめて管理できる
  • Try-Catch-Finallyの3つのスコープで堅牢な設計

中編:

  • workflow()関数で、フロー情報と実行履歴URLを取得できる
  • result()関数で、エラーの詳細を見える化できる
  • フィルター配列で失敗したアクションだけを抽出
  • 詳細な通知でデバッグ効率をアップ!

後編(今回):

  • 「終了」アクションで、正しいステータスを記録できる
  • 並列処理で処理を高速化
  • 並列処理を使用するときの注意点

この知識があれば、本番運用に耐えられる堅牢なフローが作れます!

(エラーが起きても、すぐに気づいて、すぐに対応できる)

運用のポイント

最後に、エラーハンドリングを実装したフローを運用する上でのポイントをまとめておきます:

  1. 重要度の高いフローから実装する
    • 承認フロー、データ連携など、止まると困るフローを優先
  2. エラー通知の送信先を明確にする
    • 管理者用Teams チャネル、または専用のメールアドレス
  3. 定期的に実行履歴をチェックする
    • 週1回、失敗したフローがないか確認する習慣をつける
  4. エラーログをSharePointリストに記録する
    • 後から統計分析や傾向把握ができる
  5. テンプレート化して横展開する
    • 1つ完成したら、他のフローにもコピペして展開

Next Action:まずは1つのフローに実装してみよう

さあ、ここまで読んでいただいたら、あとは実践あるのみです!

まずは、あなたが運用している重要なフローの1つに、今回紹介したエラーハンドリングを実装してみてください。

実装の流れ:

  1. Try-Catch-Finallyの3つのスコープを作る
  2. Catchの中で、workflow()とresult()を使った通知を作る
  3. 最後に「終了」(Failed)を追加する
  4. 並列処理を使っている場合は、変数の利用に気をつける

これだけでも、フローの信頼性が格段に上がります!

(最初の1つができたら、他のフローにもコピペして展開していくと楽ですよ)

エラーハンドリングは、最初は面倒に感じるかもしれません

でも、一度実装してしまえば、あとは安心して運用できます。

「エラーに気づかず業務が止まっていた」なんて事態は、もう二度と起きません!

(これ、本当に精神衛生上良いです!)

とても便利なのでぜひ使ってみてください。

それでは皆さん、良い業務ハックライフを~

コメント