Power Automate: actions 関数の引数には動的コンテンツを指定できない
はじめに
Power Automate フローのエラーハンドリングにおいて、ループ内のアクションが失敗した場合にエラー情報を取得したく、方法を模索していました。
actions 関数でエラーの発生したアクションの詳細情報を取得することを考えましたが、表題の通り、actions 関数の引数には動的コンテンツを指定できないことが分かりました。
もともと実施したかった汎用的なエラーハンドリング実装は「できなかった」になりますが、備忘録として書き残しておきます。
オーソドックスなエラーハンドリング方法とその制限
Try-Catch の実装
Power Automate フローにおいては、スコープアクションを利用してエラーをキャッチしたいアクションをグループ化し、後続のアクションの実行構成にて失敗時にエラー情報を収集する構成が Microsoft Learn 公開情報に記載されています。
(いわゆる Try-Catch )
本構成は、ほかにも様々な技術記事にて取り上げられているオーソドックスな方法です。
本構成の制限
本構成では、Try スコープのエラーを含む情報を result 関数で取得していますが、 result 関数は対象アクション内の最上位のアクションの情報のみを取得できます。
つまり、それ以下の階層(ループ内のアクションなど)の情報を取得することはできません。
スコープ第二階層以降のアクション実行結果取得方法とその制限
actions 関数の利用
下の階層のアクション実行結果が取得できないというわけではありません。
actions 関数を利用することで、引数に指定したアクションの実行結果を取得することができます。
actions 関数の制限
result 関数で取得した最上位のアクション実行結果から抽出したエラー発生アクション名を動的コンテンツとして取得し、 actions 関数の引数に指定して実行すれば、再帰的にアクションのエラー情報をキャッチできるのではないかと考えました。
しかしながら、actions 関数の引数には動的コンテンツを指定できないようです。
この情報は公開情報には見当たりませんが、実装してみるとエラー(後述)が発生し、フローを保存できません。
検証
テストフローの概要
[1,0,1,0,1] の配列を用意しておき、これをインプットとしたループで 10 を配列の各要素で除算する処理を実装しました。(「階層2:作成-ゼロ除算」 アクション)
2, 4 回目のループでゼロ除算によるエラーが発生します。

actions 関数に動的コンテンツを指定
あくまでも汎用的なエラーハンドリングとしたいため、「スコープ-try」アクションで発生した階層1のアクションを result 関数で取得し、status = Failed のアクションの名称を動的コンテンツとして actions 関数の引数に指定しました。
「階層2:作成-ゼロ除算」アクションでエラーが発生する想定のため、actions 関数の引数には「階層2:作成-ゼロ除算」が入ることを期待しますが、フローの保存ボタンをクリックすると以下のエラーが発生しフロー保存自体ができない結果となりました。

actions 関数にアクション名を直接指定
この場合はもちろん、問題なく結果を取得することができました。
5 回のループそれぞれ結果を取得できています。


まとめ
下の階層のアクション実行結果を取得するには、汎用的なエラーハンドリングとしては作成できないので、フロー毎にエラーをキャッチすべきアクションを見極めて actions 関数で情報を取得するなどの対応を取るしかないでしょう。
もちろん、最上位のアクションの失敗だけ result 関数でキャッチできるだけでもエラー対応のきっかけとしては十分かと思います。
何らかご参考になれば幸いです。
Discussion