Power Appsのモデル駆動アプリのフォームにカスタムページをダイアログ形式で表示してみる

モデル駆動型アプリを利用していると、独自のダイアログを表示したいときや、追加の情報を参照したいときがあります。

その際は、標準的な機能として簡易表示コンポーネントやサブグリッドを利用する事が考えられます。しかしながら、Javascriptを利用した高度なコーディング技術を要し、デザイン性も求められることが懸念です。

そこで、デザイン性のカスタマイズに長けるカスタムページを利用して、モデル駆動型アプリの画面上に組み込むことで、前述した懸念が解消されます。*1

今回は、モデル駆動型アプリのフォーム上にコマンド(ボタン)を配置し、カスタムページをダイアログとして表示します。

カスタムページの準備

まずは、ダイアログとして表示したい画面をカスタムページとして準備します。

カスタムページの作成

カスタムページ内の制御は本記事ではあまり重要ではないため、今回は簡単なWelcomeページを作成します。

1.Power Appsの管理画面から対象のソリューションを開き、「+新規」>「アプリ」>「ページ」を押下します。

2.「+挿入」>「ラベル」を押下し、任意のテキストを入力していきます。

カスタムページ内の制御や表示形式等は今回あまり重要ではないため、簡単なWelcomeページを作成しました。

なお、カスタムページ内のカスタマイズは、キャンバスアプリと同じように実施することが出来ます。詳細は下記公式ページを参照ください。

モデル駆動型アプリのカスタム ページにキャンバス コンポーネントを追加する - Power Apps | Microsoft Learn

カスタムページのID取得

後ほど作成したカスタムページのIDが必要になりますので、下記手順で値を控えます。

1.作成したページから「⋮」>「詳細」>「ソリューション レイヤーの表示」を押下します。

2.表示された項目から1つ目の項目を押下すると、右側に詳細が表示されます。

 各項目の中で「name」と書かれた項目がIDとなります。

Webリソースの準備

次にWebリソースを準備します。今回はJavascriptをWebリソースとして登録し、作成した画面(カスタムページ)をダイアログとして表示します。

参考にした公式ページは下記です。

learn.microsoft.com

今回はモデル駆動型アプリのフォーム中央部分にダイアログを表示してみます。下記のようなイメージとなります。

引用元:https://learn.microsoft.com/ja-jp/power-apps/maker/model-driven-apps/model-app-page-overview#examples-of-custom-pages

それでは、実際にWebリソースを登録します。

※今回はPower Appsの管理画面で直接Javascriptを書きましたが、Visual Studioで作成したJavascriptコードファイルを添付する方法でも登録が可能です。

1.Power Appsの管理画面から対象のソリューションを開き、 「+新規」>「その他」>「Webリソース」を押下します。

2.画面右側に登録画面が表示されますので、「ファイルの種類」を「Javascript」に指定します。

3.太字部分は実際に作成した画面(カスタムページ)のIDに修正し、コード枠に貼り付け保存します。

function onClickFunc() {
   var pageInput = {
    pageType: "custom",
    name: "cli_welocome_1a838"
};
var navigationOptions = {
    target: 2, 
    position: 1,
    width: {value: 50, unit:"%"},     title: "カスタムページが下記に表示されます" }; Xrm.Navigation.navigateTo(pageInput, navigationOptions)     .then(         function () {             // Called when the dialog closes         }     ).catch(         function (error) {             // Handle error         }     ); }

4.任意の名前および任意の言語を設定し、保存します。

5.手順3で記載した関数名(onClickFunc)および手順4で登録したWebリソース名(今回はcli_jbstech_js)は、のちに必要な情報となりますので、メモ帳等に控えておくと便利です。

コマンドとモデル駆動型アプリの準備

最後に、コマンドとモデル駆動型アプリの準備をします。

コマンドの準備

今回は、「取引先企業」と呼ばれる標準テーブルのフォーム上にコマンドを配置します。

1.Power Appsの管理画面から対象のソリューションを開き

 「+既存を追加」>「テーブル」を押下します。

2.「取引先企業」を選択し「次へ」を押下します。

3.「すべてのオブジェクトを含める」にチェックを入れ、「追加」を押下します。

4.「取引先企業」を選択します。

5.画面右部のカスタマイズ枠から「コマンド」を押下します。

6.画面上部から「+新しいコマンド」を押下します。

7.今回はフォーム上にボタンを配置するので、「メインフォーム」を選択し、「編集」を押下します。

8.編集画面に遷移後、画面左部から「+新規」>「コマンド」を押下します。

9.任意のラベル名(ボタンの表示名)を設定し、Webリソース名/関数名を入力し、「このボタンが押下されたときに、どのWebリソースのどの関数を実行するのか」を定義します。

10.コマンド一覧にも追加されることが確認できますので、画面右上から、「保存して公開する」を押下します。

 

モデル駆動型アプリの準備

最後に、モデル駆動型アプリを作成し、動作確認をします。

1.Power Appsの管理画面から対象のソリューションを開き、「+新規」>「アプリ」>「モデル駆動型アプリ」を押下します。

2.任意の名前を入力し「作成」を押下します。

3.画面左側から、「新規」>「Dataverseテーブル」を押下します。

4.「取引先企業」を選択し、「追加」を押下します。

5.作成した画面(カスタムページ)を追加します。画面左部から「+新規」>「カスタムページ」を押下します。

6.作成した画面(カスタムページ)を選択し、追加します。

 ※ダイアログとして表示するので、ナビゲーションには追加しません。

参考までに、結果的にアプリの構成としては下記のようになります。

7.画面右上から「保存して公開」を押下します。

8.画面右側から「再生」を押下します。実際のアプリ画面に遷移するので、動作確認を行います。

ここまでが終わったら動作確認を行います。

アプリ上で、任意のレコードのフォーム画面に遷移します。作成したコマンドが配置されていることがわかります。

※新規/既存どちらで構いません。

コマンドを押下すると、作成したカスタムページがダイアログ形式で表示されることがわかります。

最後に

今回は固定の文言(Welcomeページ)を表示しましたが、表示しているレコードをもとに関連する情報をカスタムページ上で表示することができます。

次回の記事では、表示したレコードをもとにカスタムぺージを作成したいと思います。

*1:最小限のJavascriptコードは利用しますが、汎用的に利用できます。

執筆担当者プロフィール
李 兆昊

李 兆昊(日本ビジネスシステムズ株式会社)

現在、Microsoft 365の導入を担当しています。主な担当はTeamsとSharePoint Onlineです。 体を動かすのが好きで、週末は必ず海に出ています!

担当記事一覧