Power Automateでキャンバスアプリのリンクを取得する方法
2022-03-03
azblob://2022/11/11/eyecatch/2022-03-03-power-automate-get-canvas-app-link-000.jpg

こんにちは、あおいです。

さて、Power AppsのLaunch関数はキャンバスアプリから自動で指定したWebページへの遷移、直接Eメールやテキストを送る、また通話を始められる便利な関数です。

Power Appsのキャンバスアプリから別のキャンバスアプリを起動する場合、WebリンクまたはアプリIDをコピーしてLaunch関数の引数にセットします。
※アプリIDの場合は /providers/Microsoft.PowerApps/apps/ を先頭に付ける必要があります。




しかし、Launch関数の引数に直接リンクの値をコピペするのではなく、キャンバスアプリのリンクを動的に変える方法はないかな~と思いました。調べてみるとそれっぽい方法がありました。

そこで、今回はPower Automateでキャンバスアプリのリンクを取得する方法を紹介したいと思います。


まず、Power Automateで[Power Apps(V2)]をトリガーとして、テキスト型の値を設定します。




標準タブの[Power Apps for Makers]コネクタから[アプリを入手する]アクションを選択します。




[JSONの解析]アクションで displayNameの値(アプリ名)を抽出します。
Visual Studio Codeで確認すると、Webリンク・アプリID・環境名などの値が抽出されていることが分かります。
ちなみに、[Power Apps for Makers]コネクタの[環境を取得する]アクションでも環境名を取得出来ます。




[データ操作]コネクタの[アレイのフィルター処理]アクションを選択します。
差出人[動的なコンテンツから本文を選択]、フィルター[動的なコンテンツから左辺にdisplayName・右辺にアプリ名を選択]など各項目を設定します。




後続のフローでApply to each が自動で反映されてしまうので、First関数で無駄なループ処理を回避します。



First関数で不要なApply to each を回避する方法についてはこちらの記事を参考にしてみてください。
first関数で不要なApply to eachを回避する – Hatena Blog




[変数を初期化する]アクションを選択します。
名前[appId]、種類[文字列]、値[JSONの値からWebリンクorアプリIDを取得]など各項目を設定します。



JSONの特定の値を取得する方法についてはこちらの記事を参考にしてみてください。
JSONと仲良くなるために(4) ー JSONの値を取得する



組み込みタブの[Power Apps]コネクタから[PowerApp または Flow に応答する]アクションを選択します。出力の種類[テキスト]タイトルの入力[url]値の入力[動的なコンテンツからappIdを選択]など各項目を設定します。



Power Apps StudioとPower Automateを接続します。

[設定]⇒[近日公開の機能]⇒[プレビュー]から[Power Automateペインの有効化]をオンにします。
ナビゲーションバーに追加されたPower Automateアイコンをクリックし、作成したフローの追加をします。


こちらのプレビュー機能の詳細についてはこちらの記事を参考にしてみてください。
【新機能】Power Automateペインの有効化 | cloud.config Tech Blog



最後に、ボタンのOnSelectプロパティに数式を入力します。
・利用者が任意のアプリを起動したい場合は、ドロップダウンのItemsプロパティにアプリ名を入力します。




・特定のアプリを起動したい場合は、[App]のOnStartプロパティにSet関数でアプリ名を定義しておきます。




これで完成です!

正常な動作をするかは実際に手を動かして確かめてみてください!

今回はPower Automateでキャンバスアプリのリンクを取得する方法を紹介させていただきました。
Launch関数の引数に直接リンクの値をコピペせず、Power Automateで動的にリンクを変えることが出来ました!

また、この検証でPower Automateでキャンバスアプリのリンクだけでなく、環境名・アプリID・アプリ名等あらゆる情報が取得可能であることが分かりました!色々と応用が出来そうですね!