概要
Power Automateで以下のようなオブジェクト配列があったとき、指定のプロパティの値をカンマ区切りなどで結合する方法です(join)
例えば以下のようなもの。
SharePointのユーザー型のフィールドで複数値可としていると、以下のような値が格納されています。
フィールドの値の中身を確認するには「作成」アクションを使って確認します。
※参考
[
{
"@odata.type": "#Microsoft.Azure.Connectors.SharePoint.SPListExpandedUser",
"Claims": "i:0#.f|membership|user1@tenant.onmicrosoft.com",
"DisplayName": "Tomioka",
"Email": "user1@tenant.onmicrosoft.com",
"以下":"略"
},
{
"@odata.type": "#Microsoft.Azure.Connectors.SharePoint.SPListExpandedUser",
"Claims": "i:0#.f|membership|user2@tenant.onmicrosoft.com",
"DisplayName": "Takanashi",
"Email": "user2@tenant.onmicrosoft.com",
"以下":"略"
}
]
そこからEmailプロパティの値であるメールアドレスを抜き出し、
以下のように;区切りで文字列を結合します。
user1@tenant.onmicrosoft.com;user2@tenant.onmicrosoft.com
使いどころの例です。
承認アクション(Approvals)で、承認者が複数ある場合はメールアドレスを;区切りで入力する必要があります。
担当者には先ほどの;区切りのメールアドレスが入ります。
方法1 データ操作を使った方法
①選択アクション
まず選択アクションで「開始」部分にオブジェクト配列が入ったフィールドを設定。
今回の場合はSharePointで用意したユーザー列です。
次に、以下アイコンの「マップをテキストモードに切り替え」をクリックします。
「マップ」にプロパティを設定します。
今回の場合はSharePointのユーザー列 Emailです。
これで以下のような文字列の配列になります。
オブジェクト配列から任意のプロパティの値をセレクトして新しい配列/又はオブジェクト配列にするアクションですね。
[
"user1@tenant.onmicrosoft.com",
"user2@tenant.onmicrosoft.com"
]
②結合アクション
あとは配列をカンマ区切りで結合するだけです。
結合アクションで「結合する配列」に先ほどの出力を。
「次を使用して結合」には区切り文字、今回の場合;を入力します。
表示は「結合」ですがアクション一覧画面では「参加」となっているこいつです。
※join関数でも可
方法2 変数とApply to eachを使った方法
そのまんまです。
まず文字列変数を初期化。
次に文字列変数への追加で、取得したいプロパティを設定。今回の場合はSharePointユーザー列のEmailです。
Emailは上記のJSONの通り、配列内の要素であるため参照を設定すると勝手にApply to eachが付きます。
配列の要素を一要素ずつループで参照し、メールアドレス + ; を変数に追加していく流れです。
方法1よりは直感的かもしれません。
デメリットとしては「変数の初期化」アクションがスコープの中に入らないこと、
Apply to eachが若干遅いことでしょうか・・