5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

#PowerAutomate の"LookUp" 番外編 (compose json dictionary)

Last updated at Posted at 2020-02-06

#2020/10/26 更新

こちらでもう少し詳しく書きました。

#前回の投稿
前回 PowerAutomateにおける"LookUp"では、First+Filterと、xpathによるLookUpの方法を紹介しました。

今回はよりトリッキーな感じですが、番外編としてCompose Json Dictionary Methodと呼ばれる方法を紹介します。
この方法はもともとJohn LiuのYoutubeで紹介されていたものです。

手法の概要

非常に大まかにいえば、{customerId, customerName}という列から構成される配列を、転置して1行のデータにしてしまおうというものです。
image.png
この方法にはもともと配列にID列が必要です。(転置により生成される列を一意にするため)
このような1行データ (Object)ができてしまえば、あとは outputs('Compose')?['customerId123'] のようにして各列(プロパティ)にアクセス、目的の値を取り出せます。

似たような方法は @shibatea さんの投稿 (https://qiita.com/shibatea/items/a07ecd00697d26417e70) の配列の選択アクションでも書かれています。

Compose json dictionary method

実際にやってみます。Compose json dictionaryというだけあって、Composeアクションを使います。

その前に、配列から転置後の列:値の関係にした文字列を生成します。
Selectのアクションを追加し、以下の数式を利用します。

concat('"customerId',item()?['customerId'],'":"',item()?['customerName'],'"')

手順が少し面倒なので、動画でどうぞ↓

output3.gif

この手順を行うと、以下のような結果が得られます。
image.png
なんとなく、もう少しという感じです。
あとはこれをカンマで結合して、json関数でオブジェクトに変えれば完成です。
image.png

完成!!!!
これで目的のオブジェクトができました!あとは後続のステップで outputs('Compose_3')?['customerId124'] のようにすれば、望む値が取得できます。
image.png

#まとめ
今回の方法は少し難易度高めでしたが(中級くらい)、こういう方法もあるということで、知っておくと高速に処理できたりします。(for eachして中で条件式書いたりしないで済む)
特にJohnのビデオでも説明されているように、2つの配列をJoinする際に非常に高速な処理を実現できます。

ぜひ前回の方法と合わせて試してみてください!

5
3
0

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
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?