rksoftware

Visual Studio とか C# とかが好きです

Power Automate のエラー処理 (例外処理) (try { } catch { } finally { }) でエラーの内容を取得する

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 に相当するスコープも動作しています。

ちなみにこの縦長画像を作った技はこちらです。

rksoftware.hatenablog.com

URL を開いた結果

実行結果で得られた 2 つの URL を開いてみます。

詳細ページの URL

実行履歴詳細ページの URL

エラー時の情報としてかなりいいのではないでしょうか?

■ 簡単ですね

簡単ですね。