はじめに
今回はモデル駆動型アプリのナビゲーション(サイドリンク)に任意のビューを指定する手順についてです。
また、別環境へインポートしたときにも機能する点をご紹介します。
その際のURLの挙動や個人的なオススメ設定なども書いてます。
モデル駆動型のナビゲーションの設定
通常だとビューをアプリに指定した場合、ナビゲーションには既定のビューが開くリンクが表示されます。
この部分自体を特定のビューを開くようには変更できません。(既定のビューを変更すればそれが開く)
例:以下だと見積テーブルの見積 ビューとして既定の「標準」ビューが開くようになっている。
同じテーブルの別ビューに切り替えるには通常、アプリ上のプルダウンから選択する
例:ビューの▽をクリックして「申請済み」ビューに切り替え
URLを指定したナビゲーションを追加することで特定のビュー(やフォームなども)を指定できる
アプリ設定画面では以下の種類が設定できます。
この中でURLを指定することで特定のべージを表示できるのですが、ここでアプリ内の特定ビューのURLを指定します。
公式のリンク:
URL を使用して、アプリ、フォーム、ビュー、ダイアログ、レポートを開く (モデル駆動型アプリ) – Power Apps | Microsoft Learn
対象ビューの「/main?以降~」を設定する
例として「申請済み」ビューを表示したい場合、まずビューを開いてURLを確認します。
このうちホストの部分「https://orgxxxxxxxxxxxx.crm7.dynamics.com」を除外して
「/main.aspx?appid=・・・・」の部分をURLに指定します。
名前はビュー名など任意でOKです。
TIPSこの部分はアプリのID、テーブル、ビューのIDなどが含まれています。
例:このアプリの見積テーブルの申請済みビューの場合
「/main.aspx?appid=86fc4af5-b88b-ee11-8179-00224862713b&pagetype=entitylist&etn=new_mitsumori&viewid=913e16b3-ec28-414d-a0f5-2fbcd6b53d84&viewType=1039」
実はアプリIDも除外したURLでもよい。そっちの方がよさそうな印象もあり
TIPS実はアプリIDも除外して登録してもOKでした。
後述する別環境インポートも考えるとそっちで設定した方がベターな気がします。
「/main.aspx?pagetype=entitylist&etn=new_mitsumori&viewid=913e16b3-ec28-414d-a0f5-2fbcd6b53d84&viewType=1039」
→これでもアプリ上でちゃんと表示されます。アプリ側でアプリIDを補完したURLにしてくれます。
追加すると以下のように編集画面上でもすぐにナビゲーションが追加されます。
公開して再生して動作を確認します。
指定したビューを開くナビゲーションが追加される
公開後反映されたアプリを確認すると以下のようにナビゲーションに指定したビューが追加されています。
これでプルダウンから変更せずとも直接指定のビューを開くことが出来るようになります。
別環境へインポートしても大丈夫?
ここで気になる方がいらっしゃるかと思いますが、そのままだとURLにアプリのIDが入ってしまっています。(上記まででアプリIDを除外していないURLで設定した場合)
この状態だと、別環境(検証や本番)へインポートした際に元のアプリが開いちゃうんでは?と思われるかと。
この部分はちゃんと新しいアプリIDに置き換わって開いてくれます。テーブル名やビューのIDはそのまま使われるので元々問題なし。なのでちゃんとインポート先でも使えます。
TIPS自分もそれだったらダメじゃんと思って昔検証したら、ちゃんと置き換わってくれるので素晴らしい!となりました。
TIPSただし、アプリの設定値はもとURLのままでした。アプリ側で自動で今のアプリに変換して開くてくれているような挙動です。
そのため、はじめからURLからアプリID部分を除外した内容の方がどっちかというと紛らわしくなくてよいかなーという印象です。
別環境へインポートの検証
上記アプリを別環境へインポートします。
画面ではアンマネージドで出してますが、マネージドでもどちらも結果は同じでした。
インポート先での表示
データがないので追加。ちゃんとインポート先のデータが表示されます。
アプリ上のURLの比較
インポート元、インポート先のそれぞれ申請済みビューを開いた際のURLです。
ちゃんとインポート先に置き換えて開いてくれています。
インポート元の表示
インポート先の表示
アプリ編集画面上では元のURLの設定のまま(アプリIDも)
アプリ編集画面上ではインポート先でも元のアプリIDのURLのままでした。動きとしてアプリ上で開く際に今のアプリとみなして開いてくれているような挙動です。
ホスト部分を省略しているので今の環境上のアプリとみなしてくれている気がしますね。
NOTEhttps://環境名・・・から記載すると元々別ウィンドウで開くので、そうした場合は元の環境のアプリとビューが開くのではないかと思います。(未検証ですが)
アプリIDを除外したURL指定でもOKなのでそのほうがよいかもしれない。
インポート先でもこの設定でちゃんと動いてくれるので、このままでも問題ないですが、URL指定時にそもそもアプリIDも除外しても設定でき、インポート先でも同じように置き換えて開いてくれるので、そうしておいた方が後々認識違いがなく良いかもしれません。
インポート元のURLを以下のようにアプリIDも除外して設定した例
このURLでもアプリ上ではアプリIDを今のアプリIDで補完して表示してくれるので使える。
インポート先でも同様
おわりに
ということでモデル駆動型のナビゲーションに特定のビューを指定する方法についてでした。
この点、インポートしたときにも使えるの?という点が気になると思い記事にしました。
結果的にちゃんと使えます!という点と、アプリID部分を省略しても同じように使えるし、前の設定値が残らない点ではアプリIDも省略した設定の方が良いかなーという印象です。
モデル駆動型のナビゲーションについては権限(セキュリティロール・特権)に応じて表示調整出来たり、カスタムぺージを追加したり、指定のビューやURLを設定出来たりと色々と設定が可能ですので、ぜひ設定を使いこなしてください。それでは!
関連記事
ナビゲーション 表示制御のやり方!(テーブルの特権を使用)
モデル駆動型アプリ ナビゲーション 表示制御のやり方!(テーブルの特権を使用)
以前 JPPC2023 AP-09へ登壇した際にちらっとこの話題もお伝えはしたんですが、モデル駆動型アプリのナビゲーション(ビューやカスタムページなどのリンクの部分)の表示制御ができるというお話です。 結構ニーズのある機能と思いますが、意外に知らない方は多いかと思いますので記事にしました。...
モデル駆動型アプリ関連
この記事は役に立ちましたか?
もし参考になりましたら、下記のボタンで教えてください。
コメント