Power Apps から Power Automate への引数の渡し方 (JSON 編)


# はじめに


Power Apps と Power Automate クラウドフローは、ローコードベースで連携することが出来ます。

例えば、以下は、働き方を共有する Power Apps キャンバスアプリと連携するクラウドフローです。開始、終了、予定といった情報をキャンバスアプリから受け取り、Outlook 側にも予定を登録 (空き時間扱いで) しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/e09c231d-586d-b917-0ccb-9b912fe75646.png)

:::note
アプリ自体は、以下の記事で紹介しております
:::
https://qiita.com/Takashi_Masumori/items/7db650461849b8dab820

このような、あらかじめ渡す情報やその数が決まっている場合は、Power Automate 側で以下の箇所で受け取る情報を定義しておき、Power Apps 側で Power Automate クラウドフローを呼び出す際に情報を渡す感じになります。

■Power Automate 側
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/1ea363d3-c871-2183-7c10-a5eae4b72699.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/d7106446-f4ed-4643-b5c0-b0847fa319e7.png)

■Power Apps 側
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/6c6af65b-2cdf-6f7f-e977-59d78b55c613.png)

しかし、渡したい情報が可変、つまり、一つの時もあれば、二つのようなときは別のアプローチを用いる必要があります。
結論から言うと、そのような際は JSON 形式で情報を渡すのですが、今回は、そのアプローチについて説明します。

:::note
JSON とは、コンピューターでデータ交換をおこなうためのフォーマットで、Power Apps や Power Automate でコネクタを利用する際などにも内部的に使用されています。
:::

# シナリオ

今回は、以下のような日程調整を効率化するアプリにおいて、候補日時を必要に応じて複数選択して一括で仮押さえをするようなアプリを例に説明します。仮押さえをする候補日時は、一つの時もあれば、二つの時、三つ以上の時もあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/b000ea6f-9215-7cc3-1df7-0462c9984598.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/6a64a014-cfb3-1434-90e3-7ada172c0080.png)

# Power Apps 側 (JSON を渡す側)

Power Apps では、以下のように、コレクションを JSON に変換をして Power Automate 側に渡します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/b1219c25-f81c-7837-5792-5716cf750b57.png)

一度、以下のようにラベルか何かで中身を確認しておくと良いかと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/e7fcab4f-8441-d3be-ae3e-1ac0e75d9207.png)

その上で、表示された JSON を控えておきます。

```
[
    {
        "endTime": "2023/06/14 09:30",
        "startTime": "2023/06/14 09:00"
    },
    {
        "endTime": "2023/06/14 10:00",
        "startTime": "2023/06/14 09:30"
    },
    {
        "endTime": "2023/06/14 12:00",
        "startTime": "2023/06/14 11:30"
    }
]
```

# Power Automate 側 (JSON を受け取る側)

Power Automate 側は、Power Apps 側からテキストで受け取った引数に対して、[JSON の解析] アクションを利用します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/18e4a1c4-2bd3-d128-cad0-2931442fd6e2.png)

コンテンツは Power Apps から受け取り、スキーマはサンプルから生成を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/c66f0a41-ce6e-ac30-c8b6-ee9a62419c4a.png)

ここで、先ほど控えた情報を張り付けます。

:::note
もしくは、一旦、[作成] アクションに追加して実行し、実行結果を引用しても良いかと思います。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/48db6442-34d5-1b93-461a-2ac9d55f9a52.png)

すると、スキーマの情報を勝手に生成してくれます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/54fb9b4c-8d89-a19b-a646-f3d1c1ca34c9.png)

この [JSON の解析] を行うことで、以下のように、Power Apps から受け取った情報を動的なコンテンツとして後続の処理で利用することが出来るようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/37bedc2b-a877-2134-de4c-5ab7fb3fddd5.png)

実際に実行してみると、上記の例では、3 つの会議情報を渡しているため、ループ処理し、3 つの会議の予約をしております。もちろん、4 つ情報を渡している際は、ループ処理し、4 つの会議を予約します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/e261fd7b-6516-05ef-079c-126242741f16.png)

# まとめ

今回は、Power Apps から Power Automate への引数の渡し方 (JSON 編) ということで情報を整理しました。やや難しいですが、こちらの方法を覚えることでアプリケーションや自動化フローの幅が広がるため、参考にしていただけると幸いです。