13
7

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 1 year has passed since last update.

横長なSwitchアクション・条件分岐はJSON Dictionaryですっきり短く

Posted at

Power Automateでよくやる値の変換操作。
変換の分岐が少なければ条件分岐 (Conditionアクション) を入れ子にして対応したりしますね。

image.png
この図ではDepartmentという変数の値に応じて、Managerという変数の値の設定を分岐させています。

または、選択肢が多い場合には、Switchアクションを利用することもしばしばだと思います。

image.png
わかりやすさでいえば、これらの分岐はわかりやすいですよね。直観的だし。ただ横に長くなりすぎて全体を見渡すのはすごく大変です。

そんなときに役立つ方法をご紹介します。

それがJSON Dictionaryを利用したマッピングです。

考え方

JSON Dictionaryでは、JSONオブジェクトで辞書を作ります。そしてマッピングは、入力をもとに辞書を引くことで実現されます。

image.png

入力された値に応じて辞書を探して目当ての値を得ます。似たような方法として、変換用のテーブルを用意しておく方法があります。

image.png

この方法でも同じように入力に応じた値をテーブルから取得することはできます。Power Automateでの手続きの違いについては後程紹介します。

Power Automateでの手続き

ここからは上の2つの方法をPower Automateでどうやって実現するかです。

JSON Dictionaryの場合

まずは辞書を定義しましょう。これには**作成 (Compose)**アクションを使います。その入力に以下のようなJSONを書きます。

{
    "IT":"John",
    "Finance":"Ellis",
    "HR":"Pieter",
    "Sales":"Mike"
}

image.png

あとはManagerという変数に値を設定するアクションで、以下の式を設定します。

outputs('Compose')?[variables('Department')]

image.png

ここでやっているのは**『Composeというアクションで定義されたJSONの中で、Departmentの変数の値をキーに持つ部分を取り出して』**という問い合わせです。
例えばDepartment変数に「IT」が入っていれば、先ほど定義したJSONの中でキーが"IT"になっている部分の値、Johnが取り出されます。

image.png

ということで、縦に置いた2アクションだけで値のマッピングが実現されました。

変換テーブルの場合

次に変換テーブルを使う場合です。この時も同様に、**作成 (Compose)**アクションで変換テーブルを定義しておきます。

[
    {
        "Department": "IT",
        "Manager": "John"
    },
    {
        "Department": "Finance",
        "Manager": "Ellis"
    },
    {
        "Department": "HR",
        "Manager": "Pieter"
    },
    {
        "Department": "Sales",
        "Manager": "Mike"
    }
]

次に配列の中から"Department"の値が変数の値に等しい行を取り出します(たとえばDepartment変数がITなら、最初の一行目を取り出したい)。

これには Filter arrayアクションを使います。

image.png

ちょっとだけ面倒ですが、item()?['Department']のところだけ、式を書きます。

これで変換テーブルから対象の行を取得できました。でもこのままだとFilterの結果は1行だけの配列なので、その中のManagerを取り出すために以下の式を使う必要があります。

first(body('Filter_array'))?['Manager']

image.png

このあたり、firstの使い方はこちらのブログを参考にしてください。

さて、これで求めていたマッピングができました。

image.png

おわり

今回はPower Automateのクラウドフローで、横長になりがちな値のマッピング処理をいかにすっきりさせるか、方法を2つご紹介しました。
どちらもメリデメあるんですが、個人的には、静的なマッピングなら断然JSON Dictionaryのほうが簡単かなと思います。(式を書くところも少ないし)

今回は配列やDictionaryを手で定義しましたが、なんらかのデータソースから引っ張ってくる場合でも手続きとしては同じです。
横長のフロー見にくいなーと思ったら試してみてください。

本体のほうのブログでも色々とPower Automateの小ネタを書いているので、見てみて下さい!

13
7
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
13
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?