Forms の添付ファイルをPower Automate で取得する

JSON がこわいゆりみーです。
気ままに勉強会で大喜利ネタとしてあげたら、思いのほか盛り上げってしまったので、責任をとって記事にしたいと思います。
（ライオンがいなくて本当によかった……いたら捕食されてry((((；ﾟДﾟ))))ｶﾞｸｶﾞｸﾌﾞﾙﾌﾞﾙ）

Forms での添付ファイルの設定方法は以下の記事を参照してください。

https://support.microsoft.com/ja-jp/office/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E3%82%92%E8%A8%B1%E5%8F%AF%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AE%E8%B3%AA%E5%95%8F%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B-6a75a658-c02b-450e-b119-d068f3cba4cf

私はこんな感じでForms を作成しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/f2afe9e6-637c-458d-051f-97a5e800e105.png)


# データを見てみる
まずはデータがどのような構成になっているか見てみましょう。
※日本の環境でもモダンデザイナーが GA されていますが、イマイチ動作が安定しないので、今回はクラシックデザイナーで検証しています。

1. 自動化したクラウドフローをクリックします。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/71efefbb-93d2-c36b-5709-b777e082e16f.png)

2. 新しい応答が送信されるとき トリガーを選択します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/541a9b50-5249-5118-2a96-1871f421da42.png)

3. フォームID を設定します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/30d130ca-815a-a57f-ce34-15461b95d0e8.png)

4. アクションの追加をクリックし、応答の詳細を取得するアクション を選択します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/9fa97bb3-bbe2-7ba1-4170-bbc94e137dc8.png)

5. フォームID と 応答ID を設定します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/b3e50ede-6b9d-00e6-578e-467253ebf2bf.png)

6. テストを行います。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/c6c8d6ae-f708-b19f-ef11-052b2a9c5ce6.png)
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/29c05efa-d8a8-eba8-9f30-7596be19bf22.png)

7. Forms で回答を送信し、テスト結果を待ちます。

8. テストの結果で「応答の詳細を取得するアクション」の出力の未加工入力の表示をクリックします。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/19ef1994-c068-87e7-1881-2c351ababa12.png)

9. 未加工入力の表示から、添付ファイルのデータがどこにあるか探します。

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/839679a3-fec6-d829-9a1d-5a14fa6a759e.png)

     添付ファイルのデータ（EX：ファイル名や格納場所など）は Body の下の「r5d8e～」という場所にあることがわかります。今回はこの「r5d8e～」の下の添付ファイル名や格納場所、id などを取得する方法を解説していきます。

# スキーマを作成する
ファイル名（name）や格納場所（link）をそれぞれ独立して取得し、動的な値として使用するには Json の解析アクションを利用します。データの形を Json の解析アクションに教えてあげるために応答の詳細を取得するアクションで取得したデータを元に、サンプルスキーマを作っていきます。

1. 「r5d8e～：」の値をコピーし、Excel など文字の置換ができるソフトに貼り付けます。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/9d4e90f4-f0de-60e9-0da6-8f76c6d51792.png)

2. 最初と最後の"（ダブルコーテーション）を削除します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/262bde75-c8fa-623b-337d-8c92db457df6.png)

3.  エスケープ文字を空白に置き換えます。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/e38aca4e-ff5a-3989-e238-f6cfd2cc0d57.png)
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/f41adfa9-d788-4818-ba9e-32509123840d.png)

4. 作ったスキーマをコピーします。

# JSON の解析でデータを解析する
1. 再びフローに戻り、JSON の解析アクションを追加します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/95249e41-c191-d733-a7b1-cbca10d8ee49.png)

2. コンテンツ に動的なコンテンツの応答の詳細を取得するアクションから添付ファイルをアップする質問を選択します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/67c39ebe-eee0-c12b-2400-08eeb6d374ae.png)

3. サンプルから生成 をクリックします。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/4e1f4d8c-cc78-c15a-0eb7-971a0a6990ef.png)

4. 先ほど作ったスキーマを貼り付け、完了をクリックします。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/42e5dd78-cf77-d186-bcb9-a87a22fee02b.png)

5. スキーマが生成されました。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/2062e9ab-2538-a167-b791-bb7364ce9f47.png)

これで格納されている値がそれぞれ独立して取得できるようになりました。
作成アクションなどに入れ込んで、自分が取得したい値が取れるかを確認してみてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/a2745c3d-4c99-f33d-3d11-2aaa5d01a788.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/1471d950-fe78-0ec3-9eea-19b947e51675.png)