Power Automate のエラー処理 (例外処理) でエラーの内容を取得する方法です。
まず、エラーをテストするのに手っ取り早い方法とエラー内容の取得は以前に書きました。
rksoftware.hatenablog.com
try { } catch { } finally { }
ぽいことを実現する方法も書きました。
rksoftware.hatenablog.com
エラー時にエラー時の状況が確認できる実行履歴詳細ページへのリンク URL を作る方法も書きました。
rksoftware.hatenablog.com
これらを組み合わせていい感じのエラー処理 (例外処理) を作ります。
■ 実行条件の設置
スコープを 3 つ並べて実行条件の構成を次のようにします。
実行条件の構成の開き方
構成の設定
■ エラーを起こすアクション
try { }
に相当するエラーが起こるかもしれない処理を書くスコープ スコープ (try { } に相当)
にエラーを起こすアクションを追加します。
エラーを起こすには次のような式を書くのが手っ取り早いです。
mod(1, 0)
実行すると期待通りエラーが起きてくれます。
■ エラー処理内でエラー内容の取得と実行履歴の URL を生成
スコープ_(try_{_}_に相当)
はエラーが起こるかもしれない処理の名前です。皆さんの作っているフローに合わせて読み替えてください。式の中で書く名前は名前に含まれているスペースは _
に置き換わる点に注意してください。
エラー時に取得できると嬉しそうな各種情報は次の式で取得できます。
取得する情報 | 取得する式 |
---|---|
エラーの起きたアクションの名前 | result('スコープ_(try_{_}_に相当)')[0]?['name'] |
エラーの概要 | result('スコープ_(try_{_}_に相当)')[0]?['error/code'] |
エラーの内容 | result('スコープ_(try_{_}_に相当)')[0]?['error/message'] |
フローの名前 | workflow()?['tags/flowDisplayName'] |
フローの作られている環境の ID | workflow()['tags']['environmentName'] |
フローの ID | workflow()['name'] |
フローの実行 ID | workflow()['run/name'] |
また、これらの情報を使ってフローの詳細ページや実行履歴詳細ページの URL を生成することもできます。実行履歴詳細ページの URL がわかると詳細をすぐに確認できるのでエラー時の対処に非常に有用でしょう。
詳細ページの URL
https://make.powerautomate.com/manage/environments/@{workflow()['tags']['environmentName']}/flows/@{workflow()['name']}/details
実行履歴詳細ページの URL
https://make.powerautomate.com/manage/environments/@{workflow()['tags']['environmentName']}/flows/@{workflow()['name']}/runs/@{workflow()['run/name']}
これらの情報をメールなどで自分に送信するようにしておくととても良いと思います。
■ 実行結果
今回は画像で見やすいよう前述の情報を持った JSON 作って確認します。
スコープ (catch { } に相当)
の中で JSON の解析 アクションにこんな設定をします。
{ "errorAction": "@{result('スコープ_(try_{_}_に相当)')[0]?['name']}", "errorCode": "@{result('スコープ_(try_{_}_に相当)')[0]?['error/code']}", "errorMessage": "@{result('スコープ_(try_{_}_に相当)')[0]?['error/message']}", "フローの名前": "@{workflow()?['tags/flowDisplayName']}", "フローの詳細画面の URL": "https://make.powerautomate.com/manage/environments/@{workflow()['tags']['environmentName']}/flows/@{workflow()['name']}/details", "フローの実行履歴詳細の URL": "https://make.powerautomate.com/manage/environments/@{workflow()['tags']['environmentName']}/flows/@{workflow()['name']}/runs/@{workflow()['run/name']}" }
実行
計画通り! エラーが発生して各種情報が取得できています。finally に相当するスコープも動作しています。
ちなみにこの縦長画像を作った技はこちらです。
URL を開いた結果
実行結果で得られた 2 つの URL を開いてみます。
詳細ページの URL
実行履歴詳細ページの URL
エラー時の情報としてかなりいいのではないでしょうか?
■ 簡単ですね
簡単ですね。