PowerAutomateでオブジェクトの配列をループで回したいときの方法のお話です。
例えば誰かの名前とメールアドレスを数人分配列に持たせて一人ずつ処理をしていく、というようなケース。
完成したフロー
こんな感じでフローを作って実現することができました。
以下、解説
オブジェクトの配列の用意
まず処理対象となるデータを用意します。変数を初期化する
アクションを使います。
名前は適宜(図では「承認者」)、種類には「アレイ」を指定してください。
値には以下のように指定しました。各オブジェクトにはmail
とname
のプロパティがあって、それぞれ値を持っています。
[ { "mail": "a@onmicrosoft.com", "name": "Aさん" }, { "mail": "b@onmicrosoft.com", "name": "Bさん" }, { "mail": "c@onmicrosoft.com", "name": "Cさん" }, { "mail": "d@onmicrosoft.com", "name": "Dさん" } ]
JSONでは、[ ]
で囲まれた部分は配列を、{ }
で囲まれた部分はオブジェクトを表しているので、その違いがポイントです。
ループの作成
では、配列を要素ごとにループで処理していく部分を作ります。
配列の中身をループで回すには、Apply to each
アクションを使います。
Apply to each
は、「*以前の手順から出力を選択」のところでループの処理対象を指定します。今回のケースでは前段で用意した配列(図では「承認者」)を指定します。
入力ボックスをクリックすると「動的なコンテンツ」で入力できる候補の一覧が表示されます。その中に先に作った配列があるはずなので、それを選択してください。
ループの中身の作成
ここまでで、配列の中身を順に処理するループができました。次は一つの要素に対して行う処理を作っていきます。
JSONの解析
作成した配列の一つ一つの要素はオブジェクトとしました。このオブジェクトの中にはmail
とname
という2つのプロパティを持っていますが、それを取り出すにはJSONの解析
アクションを使います。
JSONの解析
で、「コンテンツ」には現在のアイテム
を指定します(候補から選択可能なはず)。もう一つ「スキーマ」というものを入力します。これはオブジェクトを解析する際のオブジェクトの形を指定するものです。
今回のケースで「スキーマ」の指定されている内容は以下のようなものです。
{ "type": "object", "properties": { "mail": { "type": "string" }, "name": { "type": "string" } } }
が、これを素で作るのが難しい場合は、その下にある「サンプルから作成」を使って作ることも可能です。
「サンプルから作成」ボタンをクリックすると「サンプルJSONペイロードの挿入」というダイアログが出てくるので、そこに要素一個分のオブジェクトを入力して「完了」をクリックすれば、同じ結果を得られます。
今回のケースだと、以下のような感じ。
{ "mail": "a@onmicrosoft.com", "name": "Aさん" }
これでオブジェクトの中身が解析できて、各プロパティが値として取り出せるようになりました。
あとは適宜処理を書く
今回のケースでは、Teamsの指定のチャットに配列から取り出したname
とmail
を投稿していますが、メールを送るなり、Excelに書き込むなり、必要な処理を追加していきます。
図ではTeamsを投稿する本文のところに入力するときに「動的なコンテンツ」から候補を選んで入力しています。先程JSONの解析
をしているので、解析結果として候補の中にmail
とname
があるはずです。
実行結果
「Aさんさん」は盲点だった・・・