【PowerApps】複数選択したユーザーをJSON関数でPowerAutomateに渡す


・はじめに

今回紹介するのは、PowerApps で複数選択したユーザーをJSON関数で PowerAutomate に渡す方法です。

コンボボックスなどで複数選択した値やテーブル値などは、単純に PowerApps から PowerAutomate に渡しても、すべてのデータを受け取ることはできません。
しかし、JSON形式にすることで、テーブルごとすべてのデータを渡すことができるようになります。

結論、複数選択した値を PowerApps から PowerAutomate へ渡す場合は PowerApps 上でJSON関数を用いてJSON形式にしましょう。

PowerAutomate側の構築

まずは PowerApps をトリガーとしたフローを PowerAutoamte で作成します。

全体構成

サンプルで用意した下図フローでは、
・PowerApps 側の操作をトリガーとして、PowerApps から受け取った JSON を解析
・解析した結果を入れる変数を用意し、データ数分処理を繰り返します。

説明用のフローなのでとてもシンプルな構成にしています。
順番に各アクションの中身を見ていきましょう。

JSONの解析

「JSONの解析」アクションで、PowerApps から受け取ったデータを解析して後続の処理で利用できるようにします。

コンテンツには「PowerAppsで確認」をクリックして作られた「JSONの解析_コンテンツ」を配置します。

スキーマに下記コードをコピー&ペーストして使用することで、ユーザー情報を取得できます。

{
    "type": "array",
    "items": {
        "type": "object",
        "properties": {
            "Claims": {
                "type": "string"
            }
        },
        "required": [
            "Claims"
        ]
    }
}

変数を初期化する

後続の「Apply to each」で利用する変数を用意します。

Apply to each (変数の設定)

「以前の手順から出力を選択」で、「JSONの解析」-「本文」を選択することで「JSONの解析」から受け取ったデータ数分の処理を繰り返します。
「変数の設定」では、変数「username」にJSONから受け取った「Claims」が挿入されます。

ここまで設定できたら、フローを保存します。
次はPowerAppsの設定です。

PowerApps側の構築

PowerApps側の画面構成は下図の通り。
UserNameでユーザーを複数選択して実行ボタンをクリックするとJSON形式のデータがPowerAutomate側に渡されます。

利用しているコネクタは下記の2つ。

コネクタ 名称 用途
PowerApps JSON関数の利用例 実行ボタンクリック時にPowerAutomateのフローを起動する
SharePoint JSONチェック ユーザー列を利用するため

ユーザーを複数選択するために

PowerAppsでユーザー選択を可能にするために一番簡単な方法は、SharePointリストのユーザー列を追加することです。
そのために、適当なリスト(JSONチェック リスト)を用意して、Form1として追加しました。
Form1内の「UserName_DataCard1」は、複数選択可能なユーザー列です。

でも、この UserName_DataCard1 でユーザーを複数選択可能にしただけでは、PowerAutomate側にJSON形式でデータを渡せるようになるわけではありません。
重要なのは、ボタン側の制御です。

JSON関数を利用する

「実行ボタン」の「OnSelect」に下記のコードを入力します。

Set(jsonApprover,JSON(DataCardValue2.SelectedItems.Claims,IndentFour));
JSON関数の利用例.Run(jsonApprover);

1行目でUserNameで選択したユーザーをJSON形式に変換しています。
この時「DataCardValue2.SelectedItems.Claims」を指定していますね。
PowerAutomate側でも「JSONの解析」アクションなどで「Claims」という単語が使われていました。
PowerApps側からJSON形式で「Claims」テーブルを受け取ったため、PowerAutomate側で同じ名前を指定することでデータを処理できるようになったのです。

JSONに変換されたデータは、2行目の「JSON関数の利用.Run()」でPowerAutomate側へ渡されます。

JSON関数について

JSON関数の構文は以下の通りです。

JSON(DataStructure [, Format ] )

DataStructureは、テーブル名を入力。
 ※複数選択可能なコンボボックスやリストボックスもテーブルとして扱います。
 ※JSONでユーザー情報を扱う場合は、Claimsが有効です。
Formatは、ユーザー情報を使用する場合「IndentFour」を使用。
 
具体的には以下のように使用します。

JSON(DataCardValue2.SelectedItems.Claims,IndentFour)

JSON関数に関するMicrosoft公式情報はコチラから

実行結果

PowerAppsアプリを実行すると下図のような情報をPowerAutomate側で受信できました。

「JSONの解析」で出力される値:
PowerAppsから受け取ったデータが Claims に入っています。

「変数の設定」で出力される値:
PowerAppsから受け取ったデータ数分、変数「username」に Claims のデータが入っています。

やったね!!
JSONは慣れるまでは扱いが難しいですが、理解できればすごく有効な方法です。
JSON関数は幅広く活用できるものだと思いますので、色々チャレンジして使ってみるといいかもですね。