【独学】Power Automate 備忘録2

Power Automateの使い方まとめたーの 2
Power Apps + JSON編

Power Automateだけでは出来ないことも、
Power Appsと連携させればできる!
そう、Power Platformならね!
めんどくさいが

  • Power Appsからデータを渡すには…

 あらかじめAutomateにフローを作成しておき、Apps上でフローを追加しておく。

 Automate側に投げたい情報を以下のような感じで書いておく(改行・インデントはAppsの「テキストの書式設定」によるもの)。

Set(
    jsonParam,
    JSON(
        {
            name:“Jason Voorhees”
        },
    JSONFormat.IndentFour
    )
);

 あとはAppsに追加したフローの引数に上記のJSONを入れれば良い。複数入れたい場合は引数を増やせば良い。ボタンなどのOnSelectアクションに以下のように書けば、追加したフローにJSONが渡される。

// フロー名がAutomateFlowの場合
AutomateFlow.Run(jsonParam);
  • Power Automateで受け取るには…

 まず、トリガーを設定する必要がある。「組み込み」から「Power Apps」を選択し、「トリガー」タブで「Power Apps」を選択する。V2じゃない。

 次はさらにアクションを追加し、「組み込み」から「データ操作」を選択し、「アクション」タブで「JSONの解析」を選択する。このアクション内で受け取ったJSONを処理することになる。ここからが本番。

  • JSONの解析(基本)

 コンテンツ欄は動的なコンテンツから、上記で設定したトリガーの「Power Appsで確認」を選択しておく。次にスキーマなるものを書くのだが、一番面倒なところである。俺は面倒は嫌いなんだ。

 スキーマ(schema)は概要・図式・構造・形式などを意味する言葉である。つまり「今から解析するJSONはこんな構造なので解析ヨロシク👍」ということ。
スミカ・ユーティライネンです(´・ω・`)ノシ

 ここで「スキーマ書いてって言われてすぐに書ければ苦労しない」と思うかもしれないが、便利機能がある。下に見えてる「サンプルから生成」ボタンがある。選択すると、「サンプルJSONペイロードの挿入」なる画面が出てくる。つまり「サンプル入れてくれたら、それを基にスキーマ書いてやらんこともないぜ」ということ。スミ(ry
 試しに以下のサンプルをコピペして完了を押してみると…

{
    “name”:”Jason Voorhees”
}

なんということでしょう。サンプルを基にしたスキーマが書かれているではありませんか。これには面倒が嫌いなスティンガーもニッコリ。

生成されたスキーマを見てみる。

{
    “type”:”object”,
    “properties”:{
        “name”:{
            “type”:”string”
        }
    }
}

初めて見るとなんのこっちゃ分からんかもしれないが、「”name”っていう変数に文字列(string)が入ったJSONだぜ」と書いてあるだけである。これで動的なコンテンツとして”name”が選択できるようになる。

  • JSONの解析(型)

先ほどのサンプルではデータの型が文字列(string)だったが、取り扱う事ができるのは以下の6つ。

1. string : 文字列。ダブルクォーテーション”で囲まれている。
2. integer : 整数。
3. boolean : ブール値。true or false。
4. array : 配列。大括弧[]で括られ、カンマ,で区切られた複数のデータ。
5. object : コロン:の左辺を識別子(名前)、右辺を値とした物。
6. null : なにもない事を意味する。

分かりにくいであろう4-6について簡単にだけ補足しておく。

arrayは例えば以下のようなもの。

// 同じ型のデータが複数並んでいるもの = 配列
[“スミカ・ユーティライネン”,”スティンガー”,”地雷伍長”]

objectは上記を例にすると以下のようなもの。識別子はダブルクォーテーション”で囲む。

// Ravensという名前のオブジェクト
{
    “Ravens”:[“スミカ・ユーティライネン”,”スティンガー”,”地雷伍長”]
}

// 入れ子にもできる(1位以下とアセンブリは省略)
{
    “Arena”:”2脚限定アリーナ”,
    “Members”:[
        {
            “Name”:”Erst”,
            “AC”:”Anfang”,
            “Rank”:1,
            “Assemble”:{
                “Head”:”HD-REDEYE”,
                 (省略)
            }
        }
    ]
}

nullは何もない事を意味するのでこんな感じとなる

// スティンガーはACPPのアリーナにいない
{
    “Ravens”:[
        {
            “Name“:”アンプルール”,
            “Rank”:1
        },
        {
            “Name”:”スティンガー”,
            “Rank”:null
        },
        {
            “Name”:”地雷伍長”,
            “Rank”:49
        }
    ]
}
  • JSONの解析(title)

 生成されたスキーマで進めても良いが、保守目線からはわかりにくかったりする。一手間加えた方が、分かりやすいものになる。最初にできたサンプルだとnameという名前で動的なコンテンツに出てくるが、

// titleを追加
{
    “type”:”object”,
    “properties”:{
        “name”:{
            “type”:”string”,
            “title”:”AC搭乗者名”
        }
    }
}

とすると、動的コンテンツには”AC搭乗者名”として出てくる。typeの下にtitleを足す。これだけで後段の処理でデータを選ぶときに迷わなくなる。

いいなと思ったら応援しよう!