ささみ学習帳 - sasami's study book

ささみ学習帳

Microsoft365 や Power Platform について学んだこと・アイデアのメモ

PowerApps for Teams で利用できるTeams統合オブジェクトについて調べてみた

 

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つの機能のみが解説されています。

learn.microsoft.com

 

ですが、実際に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のアプリどちらでも利用可能でしたので、用途に応じて使い分けがよさそうです。

詳しくはこちらのページを参照ください。

learn.microsoft.com

 

ippu-biz.com

 

※プライベートチャネルにタブとして追加した場合はParam関数でもgroupIdが取得できない・teamIdにプライベートチャネルのIdを返す挙動はTeams統合オブジェクトと同じなようです。

 

さいごに

Teams統合オブジェクトを利用してTeamsの情報が取得できると、Power Apps アプリにTeamsと連動した動きができるようになり便利です。

Power Apps for Teams (Dataverse for Teams) と書きましたが、正式な名称は何なんだろう