PowerApps×PowerAutomate　アプリからフローを実行した際に発生したエラーメッセージを取得する

## 動画で２回に分けて解説しています。
１つ目はフローからの応答をtrue/falseで取得する方法
<iframe width="560" height="400" src="https://www.youtube.com/embed/-BA02ir_q7M?si=fZ5TVdMf8wzCVDS1" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
２つ目はフローからエラーメッセージを取得して表示する方法
<iframe width="560" height="400" src="https://www.youtube.com/embed/uqDkxzNBOyA?si=4t9Nj3WEk9zLMJgw" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

## PowerAutomate側のフローの構成
実行するフローの全体的な構成はこちら
![6468C9EA-8E80-4D39-A7A7-1F2471C8ED5B_1_201_a.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3880604/22af1086-7ba6-9714-85f4-855588933456.jpeg)

PowerAutomate側でデータを受け取ってフローが実行されますが、この際にフロー内でエラーが発生してもそれをPowerAppsアプリに送らないと、アプリ側からは実行の成否が分かりません。

## エラーが発生する可能性があるアクションの監視
そのためフロー内でエラーが発生すると考えられるアクションを、スコープアクションの中に入れて監視します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3880604/9573b82a-4ff7-3daa-94de-4755f921f699.png)
スコープは、アクションの追加で「コントロール」の中にあります。

今回の例では「イベントの追加」アクションを「TRY」と名前をつけた「スコープ」の中に入れています。

## エラーが発生した場合の処理
「TRY」の下に「スコープ」アクションをもう一つ追加し、「Catch」と名前を付けます。
![23413075-80E8-43B1-B5B8-F27191654F54_4_5005_c.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3880604/03b13c56-d17b-847a-d6d8-e91a1001a319.jpeg)

「Catch」の「•••」から「実行条件の構成」を選択します。
![83C5BBE3-09E7-418B-B2C9-C3F342E0DC8C_4_5005_c.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3880604/6d5be545-9bbb-86d6-3db8-c05ed32275b7.jpeg)
初めは「TRY」が成功した時となっているので、「失敗、スキップ、タイムアウト」した時にチェックを入れて「OK」します。
これで「TRY」内のアクションが成功しなかった時に「Catch」の中のアクションが実行されるようになりました。

## エラーメッセージの取得
「Catch」の中には、「データ操作」の「選択」と「変数」の「変数の設定」を入れています。
![23413075-80E8-43B1-B5B8-F27191654F54_4_5005_c.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3880604/2aa16222-8b12-dd91-4a6b-2290ad7d96e7.jpeg)
「選択」アクションで「TRY」の実行結果からメッセージを取得し、変数の設定で「レスポンス」に「選択」の出力を入れています。

「選択」アクションの「開始」には「式」で以下のように記述。
```
result('TRY')
```
「選択」アクションのマップは右側のアイコンで「テキストモード」にして、「式」で以下のように記述します。
```
item()['output/body/message']
```

## 応答アクションに変数を格納
次に「変数の設定」アクションで変数「レスポンス」に「動的な値」から「選択」「出力」を設定します。
これでTRYのエラーメッセージが変数「レスポンス」に入ります。

最後に「アクションの追加」から「Power Apps」「PowerAppsまたはフローへの応答」アクションを追加します。

「PowerAppsまたはフローへの応答」アクション（英語の記載になっていますが）を開き、「出力追加」から「テキスト」を選択します。
「テキスト」以外もありますが、テキスト形式が一番安定して使えると思います。
タイトルは、「response」として、「値」には「動的な値」から、変数「レスポンス」を入れます。

## PowerAppsアプリでフローからの応答を取得
PowerApps側のフローを実行するボタン等のOnSelectプロパティに以下のように記述します。
```
Set(_res,
    フロー名.Run("フローに渡す文字列","フローに渡す文字列").response
    )
```
末尾の「.response」はフローの応答アクションで設定したタイトルを記述することで、フローからの応答が得られます。それをSet関数で変数「_res」に格納しています。

応答は先ほど設定した通りテキスト形式ですので、テキストインプットボックスで表示すれば、エラーの内容を選択してコピーすることが可能ですので、調べたり共有したり出来るのでおすすめです。
![45521FA4-CD94-4E85-97AA-E14ED0E864C8_1_201_a.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3880604/01e61ca9-0b58-b1ad-48b7-01029f2cecec.jpeg)

エラーメッセージは英語で返されるので、ボタンのOnSelectプロパティに以下を設定
```
Launch("https://translate.google.com/?hl=ja&sl=en&tl=ja&text="&TextInput1.Text)
```
TextInput1がエラーメッセージを表示するテキストインプットボックスコントロールです。
上記のように設定することで、エラーメッセージをそのままGoogle翻訳で翻訳してもらうことができます。