MoreBeerMorePower

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

Teamsのタブに追加したPower Appsアプリにパラメータを渡す方法

例えば『チケットトラッキングのようなアプリをPower Appsで作っておいて、チケットが作成されたらPower AutomateでTeamsに通知を行う』このような仕組みを作ることはそれほど難しくないかと思います。

Teamsを作業の中心にするなら、Teamsのタブにアプリを追加していつでも開けるようにするのが効果的ですが、ここで課題になるのは『Teamsの通知からワンクリックで対象のチケットまで表示したい』というところです。

今回はこれを実現するための基本、Teamsのタブに追加したPower AppsアプリにURLからパラメータを渡す方法をご紹介します。

Teamsのタブを直接開くURLを取得する

まずは何と言ってもこれができないといけません。タブを開くURLはタブの右上にあるメニューから取得できます。

f:id:mofumofu_dance:20201209234113p:plain

ここをクリックするとクリップボードにタブを開くためのURLがコピーされます。コピーされる文字列は、Power Appsであれば以下のような形式になっています。

https://teams.microsoft.com/l/entity/<entity ID>/_djb2_msteams_prefix_3482859179?context=%7B%22subEntityId%22%3Anull%2C%22channelId%22%3A%22<channel ID>%22%7D&groupId=<group ID>&tenantId=<tenant ID>

このURLに含まれているパラメーターについては以下のDocsで詳しく解説されています。

docs.microsoft.com

ポイントはcontext=%7B%22subEntityId%22%3Anull この部分です。使い方は後ほど。

Power Appsでパラメーターを受け取る

Power Appsではアプリを開くURLの後ろに自由にパラメーターを追加し、アプリ側でそれを変数に格納することができます。

URLでのパラメーター渡しについては以下のDocsで解説されています。

docs.microsoft.com

Power Appsとしては App.OnStartSet(xxxx,Param("sampelParam")) このようにセットしておいて、アプリを開くURLの後ろに &sampleParam=yyyyyyとつけると、アプリ起動時にxxxxという変数にyyyyyがセットされるという流れです。

Teamsのタブに追加するアプリでも同様ですが、注意しなければいけないのは、自由にURLでパラメーターは渡せないということです。

Teamsのタブに固有のルールでパラメーターを渡さなければなりません。そこで登場するのがcontext=%7B%22subEntityId%22%3Anullです。

タブのURLを取得した際に書いた、このcontext=... がタブ内で表示するアプリへのパラメーター受け渡しに使われます。Power Appsでもこれを利用していきます。

Set(varURLParam, Param("subEntityId"))

このような式をApp.OnStartに記載しておきます。タブのURLのうち、context=%7B%22subEntityId%22%3Anull の最後のnullを渡したいパラメーターで置き換えます。

ただしこのとき数値以外を渡すのであれば %22渡すデータ%22に置き換えることを忘れないでください。

%22大事!忘れずに!

例えばHelloWorldという文字列を渡すときには

https://teams.microsoft.com/l/entity/<entity ID>/_djb2_msteams_prefix_3482859179?context=%7B%22subEntityId%22%3A%22HelloWorld%22%2C%22channelId%22%3A%22<channel ID>%22%7D&groupId=<group ID>&tenantId=<tenant ID>

となります。あとはこれをTeamsのチャンネルに投稿するなり、どこかの通知に設定するなりすればリンクから直接タブをひらき、かつデータをアプリに受け渡すことができます。

実際の動作は以下のツイートをご覧ください。

以上です!

参考

www.youtube.com