Power Automateでエラーを「スキップ」する方法:フローを中断させずにスムーズに実行するテクニック!
「Power Automate(パワー・オートメイト)のフローを作ったんだけど、途中のステップでエラーが出ても、その後の処理は続けたいな…」「このアクションは失敗しても致命的じゃないから、エラーを無視してフローを最後まで動かしたいんだけど、どうすればいいの?フローが全部止まっちゃうのは困るな…」
こんな風に感じたことはありませんか? Power Automateのフローは、通常、途中のアクションが一つでも失敗すると、そこでフロー全体の実行が停止してしまいます。これは、データの一貫性を保ったり、後続の処理に悪影響が出るのを防いだりするための安全機能ですが、すべてのエラーがフローの続行を不可能にするわけではありません。例えば、オプションの通知アクションが一時的に失敗しても、その後のメインのデータ処理は実行したい、と考えることはよくありますよね。
Power Automateには、特定のステップでエラーが発生しても、そのエラーを「スキップ」して、フローの残りの部分を続行させるための非常に重要な設定があります。これは、あなたのフローをより堅牢にし、中断せずにスムーズに最後まで実行させるための強力なテクニックです。
Power Automateでエラーを「スキップ」するってどういうこと?その目的
Power Automateでエラーを「スキップ」する、という表現は、厳密にはエラーを完全に「無視する」というよりも、特定のステップでエラーが発生したとしても、フロー全体の実行をそこで停止させずに、次のステップへ処理を進めるように設定することを指します。これは、フローの「実行条件」を変更することで実現します。
なぜエラーをスキップしたいのか?そのメリット
エラーをスキップする機能は、フローの運用における柔軟性と安定性を大きく高めます。
- 非致命的なエラーでのフロー中断を防ぐ:フローの中には、例えば「チームに通知を送る」「データベースにログを書き込む(必須ではない)」といった、そのアクションが失敗してもフロー全体の主要な目的達成には影響しないような、比較的重要度の低いステップが含まれることがあります。これらのオプション的なステップで一時的なエラーが発生した際に、フロー全体が停止してしまうのは非効率的です。エラーをスキップすることで、メインの処理は常に最後まで実行されるようになります。
- フローの堅牢性を高める:予期せぬ外部要因(例: ネットワークの一時的な遅延、連携先サービスの微細な不具合)によって、ごく稀に発生する一時的なエラーであれば、スキップして続行させることで、フローが自動的に回復し、人間の介入なしに処理を完了できる可能性が高まります。これは、あなたの作った自動化の仕組みを、より頑丈で壊れにくいものにする手助けになります。
- 部分的な成功を許容する:フローの目的が複数のタスクを実行することであり、その中のいくつかのタスクが成功すれば全体の目的は達成される、という場合にも有効です。例えば、複数のシステムへのデータ連携フローで、一つが失敗しても他の連携は進めたい、といったシナリオが考えられます。
- ユーザー体験の向上:フローの利用者が、非致命的なエラーのためにフローが途中で停止したことを通知されずに済むため、よりスムーズな自動化の体験を提供できます。
エラーを「スキップ」する基本的な考え方:「実行条件」の変更
Power Automateでエラーをスキップするための核となる設定は、各アクションが「いつ」実行されるべきかを定義する「構成:実行条件」(Run After)という項目です。
アクションの「実行条件」って何?
Power Automateのフローは、通常、アクションが上から下へ順番に実行されます。既定(デフォルト)では、すべてのアクションは「前のステップが成功した場合にのみ実行される」ように設定されています。つまり、一つ前のステップが少しでもエラーになると、その次のステップは実行されず、フロー全体がそこで停止してしまうのです。
この「実行条件」を変更することで、特定のステップでエラーが発生しても、その次のステップを実行するように設定できるわけです。
エラーを「スキップ」する具体的なやり方:「実行条件」の変更手順
それでは、特定のステップでエラーが発生しても、その次のステップへフローを進ませるための具体的な設定方法を見ていきましょう。
シナリオ:通知アクションが失敗しても、その後のデータ更新は実行したい
例えば、「SharePoint(シェアポイント)の項目が更新されたら、Teams(チームズ)に通知を送り、その後でSharePointの別の項目を更新する」というフローがあったとします。もしTeamsへの通知が一時的に失敗しても、その後のSharePointのデータ更新は絶対に実行したい、という場合に、Teams通知のアクションを「スキップ可能」に設定します。
- Power Automateのフローを編集モードで開きます。ウェブブラウザでPower Automateポータル(https://www.google.com/search?q=make.powerautomate.com)にアクセスし、編集したいフローの名前をクリックして詳細画面を開きます。その後、画面上部の「編集」ボタンをクリックし、フローを編集可能な状態にします。
- エラーが発生してもスキップしたいアクションを選択します。フローデザイナー画面で、エラーが発生してもその後の処理を続行させたいアクション(上記の例では「チャネルにメッセージを投稿する」というTeamsのアクション)を見つけてクリックします。
- アクションの「設定」を開きます。選択したアクションのアクションボックスが開いたら、その右上に表示されている「…」(三点リーダー)をクリックし、表示されるメニューの中から「設定」を選択してください。
- 「構成:実行条件」を変更します。「設定」パネルの中に、「構成:実行条件」という項目があるはずです。ここをクリックして展開します。
既定では「前のステップが成功した場合」という緑色のチェックボックスにのみチェックが入っているはずです。このチェックボックスはそのままにしておき、加えて「前のステップが失敗した場合」という赤色のチェックボックスにもチェックを入れてください。
- これにより、このアクションは、「前のステップが成功した場合」にも「前のステップが失敗した場合」にも実行されるようになります。つまり、そのアクションよりさらに前のステップが失敗しても、このアクションは動こうとする、という意味です。
【ここでのポイント】
- 「このアクション自身が失敗しても次のアクションを続ける」設定:上記の設定を行った後、このアクションが失敗した場合でも、その「次の」アクションに進ませるためには、その次のアクションの「構成:実行条件」を、同様に「前のステップが成功した場合」と「前のステップが失敗した場合」の両方にチェックを入れる必要があります。この設定を「スキップしたいアクション自身」ではなく、「スキップされた後に実行したい次のアクション」に対して行う、という点が重要です。
例えば、Teams通知が失敗しても、その後のSharePoint更新を実行したい場合、Teams通知アクションの次のアクション(例:SharePointの「項目の更新」アクション)の「構成:実行条件」を「前のステップが成功した場合」と「前のステップが失敗した場合」の両方にチェックを入れる、という形になります。
- 「完了」ボタンをクリックして設定を保存します。設定が完了したら、画面右下にある「完了」ボタンをクリックして設定を保存します。
- フロー全体を保存し、テストします。最後に、画面右上の「保存」ボタンをクリックしてフロー全体を保存してください。その後、フローをテスト実行し、意図的にTeamsへの通知を失敗させるような状況を作り出し(例:存在しないチャネルを指定するなど)、その後のSharePoint更新が実行されるかを確認します。
エラーを「スキップ」した後のフローの挙動と確認方法
上記の設定を行うと、フローの実行履歴では、エラーをスキップするように設定されたステップの挙動が通常とは異なって表示されます。
実行履歴での表示
- エラーをスキップする設定をしたステップ:もし、そのステップの前のステップが失敗した場合でも実行条件が満たされて実行されれば、そのステップは通常通り「成功」または「失敗」と表示されます。
- スキップされたステップの次のステップ:もし、前のステップが失敗し、その結果として「構成:実行条件」によって次のステップが実行された場合、その次のステップは、通常通り「成功」または「失敗」と表示され、フローは続行されます。
【重要】: エラーをスキップするように設定しても、そのステップが「成功」しなかった場合、そのステップ自体は「失敗」というステータスになります。しかし、その「失敗」が、次に続くアクションの実行を妨げない、という点がポイントです。
「実行条件」の他のオプション
「構成:実行条件」には、他にも以下のようなオプションがあります。
- 前のステップがスキップされた場合:前のステップが実行されずにスキップされた場合に、このステップを実行させたい場合に使います。
- 前のステップがタイムアウトした場合:前のステップが時間切れで終了した場合に、このステップを実行させたい場合に使います。
これらのオプションを組み合わせることで、より複雑なエラーハンドリングのロジックを構築できます。
エラーを「スキップ」する際の「大切な注意点」とベストプラクティス
エラーをスキップする設定は非常に便利ですが、誤った使い方をすると、問題を見落としてしまったり、データに不整合が生じたりするリスクもあります。
1. 全てのエラーをスキップすべきではない
エラーをスキップする設定は、本当にそのステップが失敗してもフロー全体の整合性やデータに問題がないか、十分に検討してから適用すべきです。例えば、データ作成のステップが失敗したのに、それをスキップして「データが作成されたものとして通知する」といったフローは、情報の誤解を招き、大きな問題に発展する可能性があります。
2. スキップしたエラーは必ず「ログ記録」または「通知」する
エラーをスキップしたとしても、その問題は「解決した」わけではありません。一時的な不具合であれば良いですが、根本的な問題が隠れている可能性があります。そのため、エラーをスキップした場合は、必ず以下のいずれかの方法で、そのエラーが発生したことを記録したり、担当者に通知したりする仕組みを追加しましょう。
- ログを記録する: SharePointのリストやExcel、Azure Log Analyticsなどに、エラーが発生した日時、フロー名、エラーメッセージなどの詳細を記録するアクションを追加します。
- 担当者に通知する: Power Automate管理コネクタを使って、IT担当者やフローの所有者にメールやTeamsでエラー通知を送るアクションを追加します。この通知の「構成:実行条件」は、「前のステップが失敗した場合」に設定します。
3. 「条件」アクションで回復処理を分岐させる
エラーをスキップした後に、そのエラーの種類や状況に応じて、異なる回復処理を実行したい場合があります。
- 設定方法: スキップ設定を行ったステップの後に、「条件」アクションを追加します。条件の式で、前のステップが成功したか失敗したかを判定する
result()関数やoutputs()関数、actionStatuses()関数などを利用します。- 例:
equals(outputs('スキップ設定したアクション名')?['status'], 'Failed') - この条件が「はい」のパスに進んだ場合に、「エラーログを記録する」「担当者に詳細通知を送る」といった回復処理を実行します。「いいえ」(成功した場合)のパスでは、通常の処理を続行します。
- 例:
4. 再試行ポリシーと組み合わせる
エラーをスキップする前に、そのアクションが自動で何回か再試行するように「再試行ポリシー」を設定しておくと、一時的なエラーは自動で回復し、本当にスキップが必要な致命的なエラーのみが後続の処理に影響を与えるため、より効率的です。
Power Automateでエラーを「スキップ」する設定は、あなたのフローをより堅牢にし、中断せずに最後まで実行させるための非常に有効な手段です。しかし、その強力な機能を理解し、適切に活用すること、そしてエラーをスキップした場合でも、必ずその情報を記録・通知する仕組みを組み合わせることで、安心して自動化された業務を運用できるようになるでしょう。

