Power Apps for Teams (Dataverse for Teams) でアプリを作ってみたくなりTeams統合オブジェクトについて調べてみた記録です。
Teams統合オブジェクトとは
Power Apps for Teams (Teamsにアプリ追加したPower Apps)でアプリを作成すると自動的に追加される赤枠のもののことです。Teams統合オブジェクトを通じてTeamsアプリの状態を取得することができます。
どんな情報が取得できる?[公式ドキュメント]
Microsoftの公式ドキュメントでは
Power Apps の Teams との統合で利用可能な 2 つの機能があります。 キャンバス アプリ内で Teams テーマを取得でき、チームまたはチャネルのコンテキストに応じてデータをフィルタリングできます。
と解説されており、
- Teams のテーマを取得する
- Teams のチャンネル名を取得して、アプリ データをフィルタリングします
と2つの機能のみが解説されています。
ですが、実際にTeams統合オブジェクトを使ってみると2つ以外にもいろいろな情報を取得することができるようなので検証してみました。
どんな情報が取得できる?[検証結果]
表にまとめてみました。
Property | チャネルのタブとして追加したときに取得できる値 |
---|---|
ContextEntityId | Id? 例)/providers/Microsoft.PowerApps/apps/5c6a559a-6748-44f3-af18-e3ea93affaee |
IsFullScreen |
常にfalse Teamsアプリを最大化しても変化なし |
IsSidePanel |
常にfalse |
Theme | |
Theme.Name | [クラシックTeams] default:既定 dark:ダーク contrast:ハイコントラスト --- [新しいTeams] default:ライト ←重複 dark:ダーク default:クラシック ←重複 contrast:ハイコントラスト |
ThisChannel | Appsタブが存在するチャネルの情報 |
ThisChannel.Displayname | チャネル名 |
ThisChannel.Id | チャネルId |
ThisChannel.Kind | Regualr:標準チャネル Private:プライベートチャネル |
ThisTeam | Appsタブが存在するチームの情報 |
ThisTeam.DisplayName | 標準チャネルの場合→チーム名 プライベートチャネルの場合→チャネル名 |
ThisTeam.Id | 標準チャネルの場合→チームId(=一般チャネルのチャネルId) プライベートチャネルの場合→チャネルId |
ThisTeam.GroupId | 標準チャネルの場合→チームに関連づいたm365グループのGroupId プライベートチャネルの場合→値なし |
ThisMeeting | |
ThisMeeting.Id | 常に空欄 |
気になった点の補足です。
Theme.Name の値は新しいTeamsの"ライト"・"クラシック"で重複
公式ドキュメントにもあるTeamsのテーマが取得できるプロパティですが、新しいTeamsでアプリを開いている場合、テーマが"ライト"・"クラシック"の場合どちらも同じ"default"の値が返されます。(2023年12月現在)
ThisTeam の値は標準チャネルとプライベートチャネルで値が異なる
標準チャネルの場合、ThisTeams はその名の通りチームに関する情報を返します。
しかし、プライベートチャネルの場合はDisplayName,Idにはチャネルの情報を返しGroupIdの値は空欄になります。この為、プライベートチャネルのタブとしてアプリを追加した場合はTeams統合オブジェクトからチームの情報を参照することはできないようです。
※共有チャネルはPowerApps for Teamsで作成したアプリの公開先チャネルとして表示されるものの、実際にしようとするとエラーが発生します。このため今回は動作を確認できていません。
IsFullScreen, IsSidePanel, ThisMeeting ? Teams会議アプリ用?
これらは、チャネルのタブにアプリを追加しただけでは常に同じ値であったり値を返さない状態でした。名称的にTeams会議関連ぽい雰囲気ですが詳細は不明です。
Param関数でも同様の情報を参照可能
Param関数で同じような情報を取得できるようです。Param関数では locale, hostClientType, userTeamRole, chatId などのTeams統合オブジェクトでは取得できない情報も参照可能です。
Teams統合オブジェクト | Param関数 | 補足 |
---|---|---|
ContextEntityId | - | - |
IsFullScreen | - | - |
IsSidePanel | - | - |
Theme | - | - |
Theme.Name | theme | - |
ThisChannel | - | - |
ThisChannel.Displayname | - | - |
ThisChannel.Id | ChannelId | - |
ThisChannel.Kind | ChannelType | - |
ThisTeam | - | - |
ThisTeam.DisplayName | - | - |
ThisTeam.Id | teamId | - |
ThisTeam.GroupId | groupId | - |
ThisMeeting | - | - |
ThisMeeting.Id | - | - |
- | chatId | [アプリをチャットのタブに追加した場合]チャットId |
- | hostClientType | androdi,ios,desktop…といったクライアントアプリの種類 |
- | subEntityId | ? |
- | teamType | Office 365 for Education で用いられるチームの種類 |
- | userTeamRole | チームでのユーザーの権限レベル 0:Admin,1:User,3:Guest |
Teams統合オブジェクトはPower Apps for Teamsでのみ使用できるようですが、通常のPower Apps アプリをチャネルのタブに追加した場合・Power Apps for Teamsのアプリどちらでも利用可能でしたので、用途に応じて使い分けがよさそうです。
詳しくはこちらのページを参照ください。
※プライベートチャネルにタブとして追加した場合はParam関数でもgroupIdが取得できない・teamIdにプライベートチャネルのIdを返す挙動はTeams統合オブジェクトと同じなようです。
さいごに
Teams統合オブジェクトを利用してTeamsの情報が取得できると、Power Apps アプリにTeamsと連動した動きができるようになり便利です。
Power Apps for Teams (Dataverse for Teams) と書きましたが、正式な名称は何なんだろう