5
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【PowerAutomate】SharePointのリストからJSON配列を作りArrayFilterでさらに絞り込む

Last updated at Posted at 2020-12-13

概要

事前に構築しているアドレス帳というリストに登録されているデータの中から、GroupがAの情報をJSON配列として保持し、そのJSON配列から指定した条件のデータだけにさらにJSON配列を加工するPowerAutomateのフローを作成します。
スクリーンショット 2020-12-13 16.47.02.png

実際にはリストから条件を指定して目的の情報を一発で抽出することも可能なのですが、
単純にPowerAutomateで使いそうなJSON配列とArrayFilterを活用したかったというだけで、
意味ありそうなフローを構築してみました。

フローの全体像

今回構築するフローの全体像は以下の通りです。
PowerAutomateのアクションは、日本語だったり英語だったり、日本語のものでもアクションの検索ボックスでヒットしなかったり、使いづらさを感じますね。。。
スクリーンショット 2020-12-13 16.41.30.png

それぞれのフローの解説

手動でフローをトリガーします

PowerAutomateのフローには、そのフローを実行するきっかけとなるトリガーが必要です。
ここでは手動でフローをトリガーするというトリガーを利用しています。

JSON配列を格納する変数を定義

コネクタ アクション
変数 変数を初期化する

listsという名前で配列(Array)型の変数を初期化しています。
アドレス帳のリスト情報から抽出したデータを格納するために利用します。

スクリーンショット 2020-12-13 17.09.20.png

{
    "inputs": {
        "variables": [
            {
                "name": "lists",
                "type": "array"
            }
        ]
    }
}

SharePointのリストからデータを取得

コネクタ アクション
SharePoint 複数の項目の取得

SharePointに作成済みのアドレス帳リストから、Group=Aのデータ(3件)だけを抽出します。
スクリーンショット 2020-12-13 17.18.18.png

{
    "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"にメールアドレスをセットしています。
スクリーンショット 2020-12-13 17.23.15.png

作成
{
    "inputs": {
        "name": "@items('Apply_to_each')?['Title']",
        "mail": "@items('Apply_to_each')?['Address']"
    }
}
配列変数に追加
{
    "inputs": {
        "name": "lists",
        "value": "@outputs('作成')"
    }
}

JSON配列の中身を一旦確認する

コネクタ アクション
データ操作 HTML テーブルの作成

上記までで作成されたJSON配列の中身を一旦確認するために、HTMLテーブルの作成というアクションを利用します。
テスト実行した際の結果として確認しやすいので利用しています。
スクリーンショット 2020-12-13 17.28.41.png

JSON配列から指定した条件のデータだけ抽出する

コネクタ アクション
データ操作 アレイのフィルター処理

このArrayFilterを使ってみるためだけに利用しているのですが、ここではほげ 三郎以外のデータだけを抽出しています。
スクリーンショット 2020-12-13 17.31.42.png

{
    "inputs": {
        "from": "@variables('lists')",
        "where": "@not(equals(item()?['mail'], 'hoge-saburo@younameisyu.onmicrosoft.com'))"
    }
}

テスト実行

ここで構築したフローをテスト実行してみます。
最終的にHTMLテーブルの作成の結果として出ているのが、ほげ太郎とほげ次郎の2人分のアドレス帳データとなっていることがわかります。
スクリーンショット 2020-12-13 17.34.57.png

本当はGroup=Aに一致するデータの中にほげ三郎も含まれますが、ほげ三郎だけは除外するようにArrayFilterで条件していしているので、期待した結果となっていますね。

5
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?