Power Automateのエラーハンドリングとフロー実行履歴画面へのリンク作成
こんにちは!今回は、Power Automateで非常に重要な「エラーハンドリング」について解説します。
Power Automateは色々な作業を自動化できる便利なツールですが、自動で実行していると「エラーになっていたことに気が付かなかった…」という経験はありませんか?
そんな時に必要になるのがエラーハンドリングです。今回は、エラー発生時にTeamsへ通知する仕組みとあわせて、エラーとなったフローの実行履歴画面へのリンクを直接連携する方法をご紹介します!これにより、すぐにエラー原因を調査できるようになります。
今回作成したフローの動作イメージや詳細な手順については、以下の動画でも紹介しています。
1. エラー通知と実行履歴リンクのデモ
まずは実際の動作イメージを見てみましょう。
Power Automateでエラーが発生すると、指定したTeamsのチャネルに通知が飛びます。そこにエラーとなったフロー名と実行履歴へのリンクが記載されており、リンクをクリックするだけですぐに実行履歴画面を開いて内容を確認できます。
2. エラーハンドリングのフロー作成手順
ステップ1: フローの作成と変数の初期化
まずはホーム画面の「作成」から「インスタント クラウド フロー」を選択し、手動トリガーのフローを作成します。(今回はテスト用なのでトリガーは何でも構いません)
続いて、実行履歴のリンクを作成するための準備として、「変数を初期化する」アクションを追加します。
- 名前: ワークフロー
- 種類: オブジェクト
- 値:
workflow()(※式タブから関数を入力して追加します)
ステップ2: スコープを使ったTry-Catch-Finallyの実装
エラーハンドリングの要となる「スコープ」コントロールを3つ追加します。
これらは入れ子にせず、縦に並ぶように配置し、分かりやすいように上から順に「Try」「Catch」「Finally」と名前を変更しておきましょう。
ステップ3: 実行条件(実行後の設定)の変更
ここが一番重要なポイントです。「Catch」スコープの右上にある「…(設定)」または矢印をクリックし、「実行条件の構成(この後に実行する)」を開きます。
- 「Try」のスコープに対して、「タイムアウトした」「失敗しました」にチェックを入れます。
- デフォルトで入っている「成功しました」のチェックは外します。
同様に、「Finally」スコープの実行条件も変更し、こちらは「成功しました」「タイムアウトした」「スキップされました」「失敗しました」のすべてにチェックを入れます。
これにより、Try内でエラーが起きた時だけCatchが実行され、Finallyはエラーの有無に関わらず必ず最後に実行されるようになります。
3. エラー発生時の処理とリンクの生成
ステップ4: Try内に失敗するアクションを追加(テスト用)
動作確認のため、「Try」スコープの中に確実に失敗するアクションを配置します。
下準備として適当な文字列を入れた「URL」と「ID」という変数を初期化し、SharePointの「複数の項目を取得する」アクションのサイトアドレス等にその変数をカスタム値として入力します。(これで必ずエラーになります)
ステップ5: Catch内にTeams通知アクションを追加
「Catch」スコープ内に、Teamsの「チャットまたはチャネルでメッセージを投稿する」アクションを追加します。
メッセージ本文には、ステップ1で初期化した変数(workflow関数)を利用して、フロー名と実行履歴へ飛ぶためのリンクを動的に生成するHTMLタグ(アンカータグ)を記述します。
Teamsに投稿するメッセージ内で、動的にフロータイトルや実行履歴のURLを生成するには、以下の式を組み合わせて使用します。
- フロータイトルを取得する式:
variables('workflow')['tags']['flowDisplayName'] - 実行履歴リンクのURLを生成する式:
環境ID、フローID、実行IDの情報を動的に取得して結合します。
https://make.powerautomate.com/environments/variables('workflow')['tags']['environmentName']/flows/variables('workflow')['name']/runs/variables('workflow')['run']['name']
これらを組み合わせて、メッセージ内に <a href="【実行履歴リンクのURL】">【フロータイトル】でエラーが発生しました</a> のように記述することで、クリック可能なリンクが完成します。
Teamsのメッセージ入力欄にそのままHTMLタグ(
<a href="...">リンク</a>)を入力して実行すると、タグがそのまま文字列として通知されてしまいます。これを防ぐため、メッセージ欄の右端にある「コードビューの切り替え(</>)」ボタンを押してから、HTMLタグを貼り付けてください。
4. 稼働確認
フローを保存し、右上の「テスト」から手動で実行してみましょう。
Tryスコープ内で意図的にエラーが発生し、処理がCatchスコープへ移動していることが確認できるはずです。
Teamsを開くと、綺麗にリンクが生成されたエラー通知が届いています。このリンクをクリックして、対象のフロー実行履歴画面(エラー箇所が赤くなっている画面)が一発で開けば大成功です!
エラー通知に実行履歴のリンクが含まれているだけで、「どのフローが?」「どこで落ちた?」を探す手間が省け、すぐに原因調査に取り掛かることができます。
まとめ
今回はPower Automateのエラーハンドリングの基本と、フロー実行履歴へのリンクを生成してTeamsに通知する方法をご紹介しました。
自動化は放っておいても処理をしてくれる反面、失敗に気づきにくいという弱点があります。安定した運用のためにも、ぜひフロー作成時にはこのエラーハンドリングの仕組みを取り入れてみてくださいね!




コメント
コメントを投稿