Power Automateでエラー発生時の対処方法
Power Automateフローが時々エラーで失敗するのですが、どうしたらよいのですかな…?
フローが失敗したときは、実行履歴でエラーの詳細を確認しましょう。
この記事では、Power Automatフロー失敗時に、エラーの原因を確認する方法と、エラーが出る可能性のあるアクションについて、スコープを使った例外処理の実装方法についても解説します。
- Power Automateフロー失敗時の実行履歴の確認方法
- エラーの詳細、入力/出力の確認方法
- スコープを使った例外処理の実装方法
YouTube動画で見たい方は、こちらからどうぞ!
エラー発生時の対処方法の基本
Power Automateでエラー発生時の対処方法について簡単に解説します。
Power Automateのフロー実行が成功したか、失敗したかはフローの「実行履歴」から確認できます。
フローが失敗した場合、基本的には以下の手順で対処します。
- 実行履歴から失敗したフローを開く
- エラー文や出力等から失敗の原因を確認する
- フローの修正をしてテスト実行で適切に動くことを確認する
それでは実際に、Power Automate画面でエラー対処をしてみましょう!
具体的なエラー対処方法
1.Power Automateで対象のフローを選択し、実行履歴を見ると、「状況」欄に”成功”、”失敗”等が表示されています。
2.各フローの「開始」欄の日時を選択すると、フローの実行履歴をが開きます。
3.フローを実行結果が開き、一番上の赤いポップアップで、エラーの詳細を確認できます。
またここでは、実際にどのような処理が実行され、どのようなデータが入力/出力されたかも確認できます。
ちなみにこのフローは、毎週SharePointリストアイテムをCSVにコピーするというテンプレートを使い、少し編集したフローになります。
4.まずはエラーがどのアクションで起きたかを確認します。
各アクションが成功したか、失敗したかは、以下のアイコンで見分けられます。
5.赤いビックリマーク(❗)のアクション(新しいフォルダーの作成)を選択すると、左側にアクションの実際の入力/出力データや、エラーメッセージも確認できます。
今回の場合、「ファイルまたはフォルダーの名前に使用できない文字が含まれています。名前を変更してください」と書かれています。
6.「未加工出力の表示」や「未加工入力の表示」から、そのアクションの入力/出力の詳細や、エラーメッセージの内容を確認できます。
実際の入力/出力が、どのようなデータかを確認するには、ここを見ましょう。
7.入力データの「parameters」で、フォルダーパスの入力値(parameters/path)を見ています。
パスは「Back/September 21:MealPlan」となっており、コロン(:)が怪しそうです。
8.ネット検索でSharePointの制限事項を確認すると、以下のような特殊文字はファイル名や、フォルダ名に使用できないことが分かります。
9.原因が分かったので、Power Automateの編集画面からフローを修正します。
新しいフォルダーの作成から、コロン(:)の部分を削除して、保存すればOKです。
10.再度テスト実行すると、今度はフローが成功しました!
このような感じで、フローのエラーの確認、修正を行っていきます。
エラーの通知について
Power Automateフローの実行が失敗した場合、フローの所有者へメールでの通知が届きますが、これは失敗直後には通知されないことが多いです。
このような問題を解消するため、フローを実行が失敗した際には最後にメールやTeams通知をする等の処理を入れると安心です。
スコープを使った例外処理の実装方法
フローでエラーが起こった場合にTeams通知する等、例外処理の実装方法について解説します。
スコープを使った例外処理の基本
例外処理の実装に便利なアクションが「スコープ」です。
スコープとは、複数のアクションをまとめることができるアクションです。
このスコープを3つ用意し、それぞれTry、Catch、Finallyという名前を付け、それぞれのスコープの中に、以下のようにアクション群を入れます。
それでは実際にPower Automateで、例外処理の実装をしてみましょう!
スコープを使った例外処理の実装方法
先ほどのフローに、スコープを使った例外処理を実装していきます。
1.新しいアクションで、「コントロール」の「スコープ」を3つ追加します。
2.それぞれ名前を「スコープTry」、「スコープCatch」、「スコープFinally」に変更します。
- Try:エラーが起こる可能性のあるアクション
- Catch:エラーが起こった際に実行するアクション
- Finally:エラーの有無に関わらず実行されるアクション
3.「スコープCatch」を選択し、設定>Run afterで、「スコープTry」が「タイムアウトになりました」と「失敗しました」にチェックを入れます。
4.同様の操作で「スコープFinally」の実行条件の構成も設定します。
FinallyはCatchが実行されたか否かにかかわらず、必ず実行するアクション群のため、全てにチェックを入れます。
これでTry、Catch、Finallyの実行条件の設定ができました。
5.「スコープTry」の中に、トリガー以外のアクションを全て入れます。
Tryの中に入れたアクションで、エラーが起こった時Catchが実行されます。
「スコープCatch」の中には、どのようなアクションを入れておけば良いですかな?
6.エラーが起こった場合、すぐに通知が欲しいので、今回はTeamsの「チャット又はチャネルでメッセージを投稿する」アクションを入れてみます。
7.一旦これで、フローにはあえてエラーを入れて動作確認してみます。
「スコープTry」内のアクションでエラーが起きます。
「スコープTry」内でエラーが起きた場合、「スコープCatch」が実行され、最後に「スコープFinally」も実行されます。
以下のように、エラーの通知がTeamsに届きました。
しかし実行履歴を見てみると、先ほどエラー通知が来たフローも成功になっていることがわかります。
何故かというと、Catchの処理が無事終了すると、フローの結果が成功となってしまうためです。
これだとエラーが出たフローの判別がしにくいですな…もう少しフローの修正が必要ですかな?
フローの結果を失敗とするアクションとして、「コントロール」の「終了」というアクションがあります。
「終了」アクションを実行すると、フローが途中でも強制的に終了することができます。
またその際、フローの実行が「成功」か「失敗」か「取り消し済み」かを選ぶことができます。
ただしCatchの最後に実行すると、その時点でフローが終了し、Finallyが実行されなくなってしまうため、条件分岐を利用して、Finallyに終了アクションを追加します。
8.最初に「変数の初期化」アクションを追加し、変数Resultに、ブール値でtrueという値を入れます。
9.Catchの最後に、変数の設定アクションを追加し、変数「Result」を「false」に設定します。
10.あとはFinallyで「コントロール」の「条件」を追加して、変数「Result」が「false」の場合、「終了アクション」で「失敗」を設定します。
11.処理の成功、失敗に関わらずメールを通知したい場合は、以下のようにOutlookメール送信アクション等を追加します。
12.これで実装は完了なので、もう一度テストしてみます。
フローを実行し、処理が失敗した場合は、Teamsとメールに通知が来て、処理が成功した場合は、メールのみに通知が来ます。
今回は処理が成功したので、このようにメールの通知のみ届きました。
このような感じで、スコープを使ったTry、Catch、Finallyの例外処理が実装できます。
スコープは、例外処理以外でも単純にアクションをまとめて、可読性を良くするという使い方もできるようなので、是非皆さんも活用してください!
最後に
この記事では、Power Automatフロー失敗時の対処方法と、スコープを使った例外処理の実装方法について解説しました。
Power Automateでエラーになったフローは、実行履歴から見ることができ、フローを開くとエラーの原因を確認することができます。
Power Automateのスコープを使うと、複数のアクションをまとめることで、例外処理の実装をすることができます。
Power AutomateやRPAでは、エラーの対処や、例外処理の実装はとても重要なので、是非皆さんも活用してみてください!