Power Automate のクラウドフローを利用していると、エラーが発生したときどうしようとか、エラー発生時に何か通知を送るような処理を加えたいだとか、何かしらエラーに対する処理を考えたくなるときがあります。

クラウドフローでも必要な部分ではエラーが発生した場合の処理を作成することができますので、それらをちょっとまとめて書いておきたいと思います。

基本はリトライ

クラウドフローのアクションでエラー発生時の基本動作は自動的なリトライ(再試行)です。この設定を確認するには、それぞれのアクションの [設定] を開いてみましょう。既定値は指数間隔で実行される最大 4 回の再試行です。

指数間隔というのは、再試行の回数を重ねるごとに、おおよそ倍々で再試行間隔が広がっていくように設定されているもののようですね。

この再試行を行っても処理が成功しなかったものが Power Automate の表示上では「エラー」となるわけですね。

実行条件の構成を利用したエラー処理

アクションがエラーとなった場合、既定での状態では以降のアクションがすべてスキップされてしまい、その時点でフローの処理が失敗として終了してしまいます。アクションがエラーとなった場合でもそれ以降の処理を実行し、場合によってはエラー処理を作成するために利用できる機能が「実行条件」です。

実行条件を確認するには、それぞれのアクションの [実行条件の構成] を開いてみましょう。

既定では直前のアクションが成功した場合にのみこのアクションが実行されるようになっているため、エラー(失敗)となったアクション以降の処理がすべてスキップされるというわけです。つまりは、この設定を変更して直前のアクションが失敗した場合にアクションが実行されるようにすれば、エラー処理を組み込めるわけです。

並列分岐パターン

まずは並列分岐を利用したパターンです。編集画面で見ても視覚的にも分かりやすく、エラーが発生した場合にはメールなどで通知を送って終了などの単純かつ良く利用できそうなパターンですね。

左右で実行条件を変えているため、この場合では直前のアクションが成功したら左側、失敗したら右側が実行されます。

直列パターン

つぎはアクションを直列につなげたパターンです。エラーが発生した場合にだけ特定の処理を差し込み、それ以降の処理はエラーの発生に関わらず同じ処理を行いたいなどのパターンで利用できます。

エラー発生時に実行するアクションは、直前のアクションが失敗したら実行するように設定し、さらにその次のエラーに関係なく実行するアクションでは直前のアクションが成功、または、スキップされたら実行するように設定します。スキップされたらというのは、エラー判定したいアクションが成功した場合にはその直後のアクションがスキップされるので、その場合でも実行されるようにしたいという設定ですね。

スコープ利用パターン

複数のアクションの何かしらでエラーが発生したときに、特定の処理を実行したいというパターンです。複数のアクションをまとめて扱うには「スコープ」を利用します。

スコープを利用することで、その直後のアクションには “スコープとしての” 実行結果が渡ります。この結果はスコープ内のいずれかの処理が失敗した場合にエラーとなります。プログラミング言語などでも利用できる「Try-Catch」のような感じですね。

さらに次のような形にすれば「Try-Catch-Finally」のようになります。Finally というのはエラーが発生してもしなくても必ず実行される処理のことです。

スコープは便利ですね。

さいごに

自分だけに影響するものであったり、単純なフローであったりするときは、ほとんど気にすることは少ないと思います。ただ、複雑になってきてエラー発生時に何かしら対処が必要なものなどになったときには、今回のようなエラー処理の方法を知っておくと良さそうだと思いました。

リカバリーの処理は考えるのが難しいですが、エラー発生時の通知などは仕込んでおくと良さそうですよね。