PowerAutomate: トリガー(Trigger) と アクション(Action) 関数のまとめ

# 背景
最低限一つの Trigger と Action から構成されるフローですが
Trigger/Action 関連の関数ってあまり馴染みがないので、初めての人に教える為にちょっと整理

コピペ用に特化した記事は以下

https://qiita.com/baku2san/items/efc660eea2aab4133104

# 概要
基本、以下を知ってれば大丈夫
- body
- triggerOutputs

慣れてきて設定値再利用したい！とかになったら以下も
- actions
- trigger

# 関連関数一覧
|Name|説明|補足|主観|
|-|-|-|-|
|[action](https://docs.microsoft.com/ja-jp/azure/logic-apps/workflow-definition-language-functions-reference#action)|実行時に現在のアクションの出力を返すか、または他の JSON の名前と値のペアの値を返します。 [actions](https://docs.microsoft.com/ja-jp/azure/logic-apps/workflow-definition-language-functions-reference#actions) もご覧ください。|一定の条件下なので通常は使わない||
|[actionBody](https://docs.microsoft.com/ja-jp/azure/logic-apps/workflow-definition-language-functions-reference#actionBody)|実行時のアクションの body 出力を返します。 body もご覧ください。|body と同一。長いし body 使うから使わなくても||
|[actionOutputs](https://docs.microsoft.com/ja-jp/azure/logic-apps/workflow-definition-language-functions-reference#actionOutputs)|実行時のアクションの出力を返します。 [outputs](https://docs.microsoft.com/ja-jp/azure/logic-apps/workflow-definition-language-functions-reference#outputs) と [actions](https://docs.microsoft.com/ja-jp/azure/logic-apps/workflow-definition-language-functions-reference#actions) を参照してください。|[outputs](https://docs.microsoft.com/ja-jp/azure/logic-apps/workflow-definition-language-functions-reference#outputs)() を使う。すでに使えない？![2022-03-14_16h59_33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1645569/8b61c02f-b4ec-5bea-6648-cc9367a62e0c.png)||
|[actions](https://docs.microsoft.com/ja-jp/azure/logic-apps/workflow-definition-language-functions-reference#actions)|実行時にアクションの出力を返すか、または他の JSON の名前と値のペアの値を返します。 [action](https://docs.microsoft.com/ja-jp/azure/logic-apps/workflow-definition-language-functions-reference#action) もご覧ください。|アクション自体の Name, Inputs, Outputs を保持。<br>**引数を動的に使いまわす時は、inputs/parameters を使う**<br>outputs/status とかはもう使わないかな？|推奨|
|[body](https://docs.microsoft.com/ja-jp/azure/logic-apps/workflow-definition-language-functions-reference#body)|実行時のアクションの body 出力を返します。 [actionBody](https://docs.microsoft.com/ja-jp/azure/logic-apps/workflow-definition-language-functions-reference#actionBody) もご覧ください。|Action の実行結果部分があるので一番使うんじゃないかな、と。actions/body から利用してもいいけど|必須|
|[formDataMultiValues](https://docs.microsoft.com/ja-jp/azure/logic-apps/workflow-definition-language-functions-reference#formDataMultiValues)|form-data または form-encoded アクション出力内のキー名と一致する値を含む配列を作成します。|||
|[formDataValue](https://docs.microsoft.com/ja-jp/azure/logic-apps/workflow-definition-language-functions-reference#formDataValue)|アクションの form-data 出力または form-encoded 出力内のキー名と一致する単一の値を返します。||
|[multipartBody](https://docs.microsoft.com/ja-jp/azure/logic-apps/workflow-definition-language-functions-reference#multipartBody)|複数の部分を持つアクションの出力の特定の部分に対する本文を返します。|||
|[outputs](https://docs.microsoft.com/ja-jp/azure/logic-apps/workflow-definition-language-functions-reference#outputs)|実行時のアクションの出力を返します。|body + header 的なもの。あまり使う機会はないけど、API の結果とかみたい場合には使うかも||
|[parameters](https://docs.microsoft.com/ja-jp/azure/logic-apps/workflow-definition-language-functions-reference#parameters)|ワークフローの定義で記述されているパラメーターの値を返します。|$connections 取れるけど・・使い道が思いつかない|
|[trigger](https://docs.microsoft.com/ja-jp/azure/logic-apps/workflow-definition-language-functions-reference#trigger)|実行時に、または他の JSON の名前と値のペアから、トリガーの出力を返します。 triggerOutputs および triggerBody もご覧ください。|トリガーの設定再利用とかに利用可能|推奨|
|[triggerBody](https://docs.microsoft.com/ja-jp/azure/logic-apps/workflow-definition-language-functions-reference#triggerBody)|実行時にトリガーの body 出力を返します。 trigger をご覧ください。||
|[triggerFormDataValue](https://docs.microsoft.com/ja-jp/azure/logic-apps/workflow-definition-language-functions-reference#triggerFormDataValue)|	form-data または form-encoded トリガー出力のキー名と一致する単一の値を返します。||
|[triggerMultipartBody](https://docs.microsoft.com/ja-jp/azure/logic-apps/workflow-definition-language-functions-reference#triggerMultipartBody)|トリガーの複数部分からなる出力内の特定の部分の本文を返します。|||
|[triggerFormDataMultiValues](https://docs.microsoft.com/ja-jp/azure/logic-apps/workflow-definition-language-functions-reference#triggerFormDataMultiValues)|form-data または form-encoded トリガー出力内のキー名と一致する値を含む配列を作成します。|||
|[triggerOutputs](https://docs.microsoft.com/ja-jp/azure/logic-apps/workflow-definition-language-functions-reference#triggerOutputs)|実行時のトリガーの出力を返すか、または他の JSON の名前と値のペアの値を返します。 trigger をご覧ください。|トリガーの結果概要とかがあるのでまずはこっからアクションへ|必須|
|[workflow](https://docs.microsoft.com/ja-jp/azure/logic-apps/workflow-definition-language-functions-reference#workflow)|実行時にワークフロー自体に関するすべての詳細を返します。|フロー名称とか現在環境情報とか取れる|

# 取得例とか
どんな感じで取れるか見ることで、イメージが沸いて、ああこれだけ知っておけばいいのねって理解の助けへ

## Body vs Outputs vs Actions
通常は以下ぐらい
- 結果取得に Body() を
- 設定値再利用で Actions() を

```json:Actionsでの取得例
actions('Post_adaptive_card_and_wait_for_a_response')?.outputs.body.submitActionId
```

```json:Actions paramters の利用例
actions('Post_adaptive_card_in_a_chat_or_channel_2').inputs.parameters.folderId
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/ff8e653e-cc83-3052-3c39-f5953fd2ce3d.png)

## TriggerBody vs TriggerOutputs vs Trigger
Actions と似たような感じ。
- トリガーの情報取得に triggerBody or triggerOutputs() を
- トリガーの設定再利用に trigger() を

```json:Trigger()での取得例（Teamsの新しい投稿Triggerでの場合）
trigger().inputs.parameters.groupId
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/04b2f04b-5b48-323f-96f9-2d1f06ee5688.png)


## parameters
$connections を取得した例。他に取れるものは不明
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/8d826881-cc4d-37bf-cba8-60baec6ddbf4.png)


## workflow
自フロー自体の情報取得
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/173bc795-6217-2dfe-509c-d32117cadc0c.png)

# あとがき
初心者ってより、中級者向けかも・・ :thinking: 


# 参考
https://docs.microsoft.com/ja-jp/azure/logic-apps/workflow-definition-language-functions-reference

# keyword
4 functions for Trigger/Actions you should know: triggerOutputs, body, trigger and actions