概要
事前に構築しているアドレス帳
というリストに登録されているデータの中から、GroupがA
の情報をJSON配列として保持し、そのJSON配列から指定した条件のデータだけにさらにJSON配列を加工するPowerAutomateのフローを作成します。
実際にはリストから条件を指定して目的の情報を一発で抽出することも可能なのですが、
単純にPowerAutomateで使いそうなJSON配列とArrayFilterを活用したかったというだけで、
意味ありそうなフローを構築してみました。
フローの全体像
今回構築するフローの全体像は以下の通りです。
PowerAutomateのアクションは、日本語だったり英語だったり、日本語のものでもアクションの検索ボックスでヒットしなかったり、使いづらさを感じますね。。。
それぞれのフローの解説
手動でフローをトリガーします
PowerAutomateのフローには、そのフローを実行するきっかけとなるトリガー
が必要です。
ここでは手動でフローをトリガーするというトリガーを利用しています。
JSON配列を格納する変数を定義
コネクタ | アクション |
---|---|
変数 | 変数を初期化する |
listsという名前で配列(Array)型の変数を初期化しています。
アドレス帳のリスト情報から抽出したデータを格納するために利用します。
{
"inputs": {
"variables": [
{
"name": "lists",
"type": "array"
}
]
}
}
SharePointのリストからデータを取得
コネクタ | アクション |
---|---|
SharePoint | 複数の項目の取得 |
SharePointに作成済みのアドレス帳
リストから、Group=Aのデータ(3件)だけを抽出します。
{
"inputs": {
"host": {
"connectionName": "shared_sharepointonline",
"operationId": "GetItems",
"apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline"
},
"parameters": {
"dataset": "https://younameisyu.sharepoint.com/sites/Microsoft365",
"table": "4cc19b07-a334-4aab-a1fb-dca9fb70195a",
"$filter": "Group eq 'A'"
},
"authentication": {
"type": "Raw",
"value": "@json(decodeBase64(triggerOutputs().headers['X-MS-APIM-Tokens']))['$ConnectionKey']"
}
}
}
取得したデータをJSON配列に格納
コネクタ | アクション |
---|---|
コントロール | Apply to each |
データ操作 | 作成 |
変数 | 配列変数に追加 |
SharePointのアドレス帳
リストから、Group=Aのデータを取得し、その宛先情報をJSONオブジェクトにして、配列(lists)に追加しています。
JSONの構造としては、"name"に宛先の名前を、"mail"にメールアドレスをセットしています。
{
"inputs": {
"name": "@items('Apply_to_each')?['Title']",
"mail": "@items('Apply_to_each')?['Address']"
}
}
{
"inputs": {
"name": "lists",
"value": "@outputs('作成')"
}
}
JSON配列の中身を一旦確認する
コネクタ | アクション |
---|---|
データ操作 | HTML テーブルの作成 |
上記までで作成されたJSON配列の中身を一旦確認するために、HTMLテーブルの作成というアクションを利用します。
テスト実行した際の結果として確認しやすいので利用しています。
JSON配列から指定した条件のデータだけ抽出する
コネクタ | アクション |
---|---|
データ操作 | アレイのフィルター処理 |
このArrayFilterを使ってみるためだけに利用しているのですが、ここではほげ 三郎
以外のデータだけを抽出しています。
{
"inputs": {
"from": "@variables('lists')",
"where": "@not(equals(item()?['mail'], 'hoge-saburo@younameisyu.onmicrosoft.com'))"
}
}
テスト実行
ここで構築したフローをテスト実行してみます。
最終的にHTMLテーブルの作成の結果として出ているのが、ほげ太郎とほげ次郎の2人分のアドレス帳データとなっていることがわかります。
本当はGroup=Aに一致するデータの中にほげ三郎も含まれますが、ほげ三郎だけは除外するようにArrayFilterで条件していしているので、期待した結果となっていますね。