MoreBeerMorePower

Power Platform中心だけど、ノーコード/ローコード系を書いてます。

Power Apps (CDS for Teams) が使われているチームを取得する

[2020/09/25 21:35 更新:環境取得のアクションをPower Apps for MakersからPower Platform for Adminsに変更]

はじめに

まだ何に使えるか思いついていないですが、Teams で使えるようになった Power Apps に関するTipsです。

Teams のチームで Power Apps / Virtual Agents を作成すると、そのチームに関連付く 環境 が作成されます。

Power Platform管理センターを見てみると、この環境はタイプが Microsoft Teams になっていて、関連付けられたチームを開くこともできます。

f:id:mofumofu_dance:20200925194434p:plain

今回はこの、Power Platformの環境 と チーム の関連付けを取得するための方法をご紹介します。

環境とチームを結ぶ鍵

まずはPower Automateで、Power Platformの環境一覧を取得します。「Power Platform for Admins」コネクターの 「List Environments as Admin」アクションを利用します。

f:id:mofumofu_dance:20200925213549p:plain

このアクションの結果は非常に長いJSON配列になっているのですが、Teamsに関連づく環境と、そうでない通常の環境で見比べると以下のプロパティに相違があることがわかりました。

f:id:mofumofu_dance:20200925194916p:plain

この securityGroupId が、通常環境には存在せず、Teamsタイプの環境にだけ設定されています。

実際、環境名と securityGroupId だけを抽出してみると、下図のようになっています。

f:id:mofumofu_dance:20200925195053p:plain

これにより、チームと関連づいている環境を探す(またはその逆)場合には、この securityGroupId を頼りにすればいいことがわかります。

チームの取得

securityGroupId はずばり AADのGroup IDになっています。

このIDを「チームの取得」アクションの入力にすることでチームの詳細が取得できます。

「List Environments as Admin」以降の処理は以下の通りです。

  1. Get Environments で取得した結果 (配列) を、securityGroupId があるかどうかでフィルター
  2. フィルターの結果をもとに Apply to each
  3. Apply to each内で、「Microsoft Teams」コネクターの「チームの取得」を実行

f:id:mofumofu_dance:20200925195532p:plain

「アレイのフィルター処理」アクションでも、「チームの取得」アクションでも、securityGroupId を使いたいときには

item()?['properties']?['linkedEnvironmentMetadata']?['securityGroupId']

でアクセスできます。

結果

期待通り、ここでは2つの環境、それに関連づくTeamsが取得できました。

f:id:mofumofu_dance:20200925200041p:plain