LoginSignup
6
3

More than 3 years have passed since last update.

Power Automateで階層が深く同じキーがたくさんあるJSONをなるべく楽に処理する

Last updated at Posted at 2020-07-25

Power Automateで、次のように階層が深く、同じキーがたくさんあるJSONを処理したいとします。※サンプルはコラボフローのWebhookで送信されるJSONを簡略化したもの。

{
  "contents": {
    "fidCustomerCode": {
      "label": "01",
      "value": "01",
      "type": "text"
    },
    "fidCustomerName": {
      "label": "コラボ建設株式会社",
      "value": "コラボ建設株式会社",
      "type": "text"
    },
  },
  "request_date": "2020-07-25T14:22:51Z",
  "document_id": 1,
}

よしっ!とこれを「JSONの解析」にかけると、こんな感じで同じ変数が大量にできてしまいます。
変数がたくさんできる.png
使いづらい!てゆうかわからん。
そんな時は、triggerBody()を使って自力でJSONの階層を指定します。

triggerBodyは実行時のトリガーの出力(他システムからWebhookで送信されたデータを「HTTP要求の受信時」で受け取ったとすると、Webhookから送信されたJSON)を返すので、triggerBody()に続けてJSONの階層を指定します。

triggerBody()?['contents']?['fidCustomerName']?['value']

※JSONにキーが存在しない場合のエラー回避のため、演算子を使ってNULLを返すようにしています。キーが無い場合にアクションをエラーにしたい場合は演算子を使わずにキーを指定します。

実際にフローの設計画面でセットする際は、下記のように「動的なコンテンツの追加」から「式」パネルを選択してtriggerBody()に続くJSON階層を指定します。
2020-07-27_21h36_27.png
これで最初のサンプル内にある「contents.fidCustomerName.value」の値「コラボ建設株式会社」を取得する事ができます。

ちなみに式パネルでtriggerBody()をセットした後の画面ではこんな感じで関数「triggerBody()」が表示されますが・・
2020-07-25_23h38_54.png
フローを保存した後再度開くと、このように表記が変わります。
これは表記が変わっただけで、特に動作への影響は無いようです。
2020-07-25_23h41_06.png

当方、Power Automate初心者なので、もっといい方法があるのを知らないだけかもしれません。もしいい方法があればどなたか教えてくださると喜びます。

6
3
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3