例えば『チケットトラッキングのようなアプリをPower Appsで作っておいて、チケットが作成されたらPower AutomateでTeamsに通知を行う』このような仕組みを作ることはそれほど難しくないかと思います。
Teamsを作業の中心にするなら、Teamsのタブにアプリを追加していつでも開けるようにするのが効果的ですが、ここで課題になるのは『Teamsの通知からワンクリックで対象のチケットまで表示したい』というところです。
今回はこれを実現するための基本、Teamsのタブに追加したPower AppsアプリにURLからパラメータを渡す方法をご紹介します。
Teamsのタブを直接開くURLを取得する
まずは何と言ってもこれができないといけません。タブを開くURLはタブの右上にあるメニューから取得できます。
ここをクリックするとクリップボードにタブを開くための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で詳しく解説されています。
ポイントはcontext=%7B%22subEntityId%22%3Anull
この部分です。使い方は後ほど。
Power Appsでパラメーターを受け取る
Power Appsではアプリを開くURLの後ろに自由にパラメーターを追加し、アプリ側でそれを変数に格納することができます。
URLでのパラメーター渡しについては以下のDocsで解説されています。
Power Appsとしては App.OnStart
に Set(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のチャンネルに投稿するなり、どこかの通知に設定するなりすればリンクから直接タブをひらき、かつデータをアプリに受け渡すことができます。
実際の動作は以下のツイートをご覧ください。
やっと試せた。手順が分かれば問題ないな。 pic.twitter.com/uCPp4MXKqY
— Hiro (@mofumofu_dance) 2020年12月9日
以上です!