皆さんはPower Appsのキャンバスアプリを開く段階で、特定の画面を直接開きたいと考えたことはあるでしょうか。
本記事では、Power Appsのキャンバスアプリで画面を開く際に、最初に開く画面を指定して開く方法をご紹介します。
今後Power Appsで作成したアプリを活用したい方の参考になればと思います。
既定の設定
キャンバスアプリを作成した際の既定の設定では、アプリ編集画面で最上部に配置された画面がアプリ起動時に開くという設定になっています。つまりアプリの編集画面で画面配置を一つずつずらすことで初期画面は変更することが可能です。
アプリ編集画面が下の画像のようになっている場合、「Home」という画面が最初に開きます。
シンプルなアプリでは、最初に生成される画面(最上部の画面)をホーム画面として、各画面へ遷移するNavigate関数を使用したボタンを配置して運用されることが大半かと思いますので、この設定で問題ないと思います。
一つずつ画面の配置をずらすことで設定は出来ますが、面倒+初期画面を固定の一つしか設定できないという欠点があるため、以下のセクションでは明示的に指定する方法を説明します。
手動で初期画面を設定する方法
初期画面を設定する方法はかなりシンプルで、アプリ内のStartScreenプロパティに設定したい画面名を入力することで指定できます。(StartScreenプロパティはアプリで最初に開く画面を指定する項目で、既定では空欄となっています。)
まずはプロパティの位置について、StartScreenプロパティは、アプリ編集画面の「App」の詳細設定項目に存在します。Appを選択した状態で、アプリオブジェクトもしくは左上のプルダウンからStartScreenを開くことで編集することが可能です。
例えば「Screen1」と設定すれば、初期画面はScreen1になります。
かなりシンプルですね。
アプリ外から画面を指定して開く方法
アプリ外から画面をして開く方法は、アプリのWebURLを指定してアプリを開くことで実現できます。
アプリのURLは、アプリの詳細>Webリンクから取得することが出来ます。
ただ注意点があり、このままのURLではアプリ内の画面を指定することが出来ません。この次のステップでこの問題を解決する方法をご紹介します。
アプリ内の設定
対象のキャンバスアプリのStartScreenプロパティを以下のように設定します。
If(Param("URLに渡す変数名")="URLで指定した引数",開きたいスクリーン名,Param("URLに渡す変数名")="URLで指定した引数",開きたいスクリーン名)
例:If(Param("page")="Screen1",Screen1,Param("page")="Screen2",Screen2)
※ここで設定する"URLに渡す変数名"と"URLで指定した引数"は任意の文字で構いませんが、後にURLに追記する値となるので、わかりやすい英数字とすることをおすすめします。
アプリのURLの編集
アプリのURLは、既定では次の様な値になっています
https://apps.Power Apps.com/play/xxxxxxxxxxxxxxxxxxxxx?tenantId=yyyyyyyyyyyyyyyyyy
この末尾に先ほど設定した情報を追記します。
https://apps.Power Apps.com/play/xxxxxxxxxxxxxxxxxxxxx?tenantId=yyyyyyyyyyyyyyyyyy?<変数名>=<値>
例:https://apps.Power Apps.com/play/e/default-xxxxxxxxxxxxxxx-xxxxxxxx-xxxxxxxxxxx?tenantId=yyyyyyyyyyyyyyyyyyyyyyy?page=Screen2
例の様に取得してきたアプリのURLの末尾にアプリ内で設定した変数を追記してあげれば完成です。
結果の動き
アプリ編集画面はこのようになっており、本来であれば、画面Homeが開きますが、今回は設定を全て行った後、「アプリのURLの編集」例のURLを使用します。
https://apps.Power Apps.com/play/e/default-xxxxxxxxxxxxxxx-xxxxxxxx-xxxxxxxxxxx?tenantId=yyyyyyyyyyyyyyyyyyyyyyy?page=Screen2
page=でScreen2を指定したので、初期画面が変更されて画面2が表示されました。
次は、初期画面がScreen1となるように指定します。
https://apps.Power Apps.com/play/e/default-xxxxxxxxxxxxxxx-xxxxxxxx-xxxxxxxxxxx?tenantId=yyyyyyyyyyyyyyyyyyyyyyy?page=Screen1
page=でScreen1を指定したので、初期画面が変更されて画面1が表示されました。
動作の解説
今回の内容の最も重要となる部分が、Power AppsのParam関数です。
Param関数の動作としては、「Web URL経由でPower Appsアプリにアクセスされた際に渡されたパラメーターを取得する」というものです。
今回アプリURLの編集セクションで行ったようにWeb URLの末尾に追記することで、指定した変数に引数として値を渡すことが出来ます。
今回は、StartScreenプロパティのIf文で条件指定する際の値として、Param関数から受け取った値を参照するようにしていたので、外部から動的に初期画面を指定できるようになり今回の動きが実現できました。
今回は紹介しませんが、他にも以下の様なアプリの制御が応用の一例として考えられます。
- Launch関数を使用し、アプリから別アプリの画面に移動する動き
- ユーザーやチーム別に個別のURLを案内することで別の画面に誘導する動き
- マスターテーブルを作成し、ユーザーや組織別に使用できる画面を管理し、StartScreenの設定を工夫することで一つのURLから移動する画面を制御する動き
Param関数の動作については、MSの公式記事で説明されているので参考にしてみてください。
まとめ
今回は、Power Appsのキャンバスアプリで画面を開く際に、最初に開く画面を指定して開く方法を紹介しました。Param関数が理解できると至ってシンプルな内容です。
設定時は少々面倒ですが、上手く活用できるとアプリ数を減らすことが出来るのでアプリの管理を軽減してくれると思います。
このようにPower Appsは少々癖のあるサービスですが、工夫することで様々な動きが可能になってくるので、皆さんも是非試行錯誤してオリジナルのアプリを作ってみてください。
坂井 颯斗(日本ビジネスシステムズ株式会社)
中部HC部に所属。現在はIoTシステムの保守作業とPowerPlatformのQA対応を行っています。 最近クラフトビールにハマっています。HazyとベルジャンIPAがお気に入りです。
担当記事一覧