【独学】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を足す。これだけで後段の処理でデータを選ぶときに迷わなくなる。