Tech Dynamics 365 (CRM)

Microsoft Dynamics 365 (CRM) を中心とした技術情報を提供しています。

WebリソースのHTMLからグローバルコンテキストを利用する

こんにちは。

今回は、Webリソースとして登録したHTML上から、グローバルコンテキスト(GlobalContext)を利用する方法をご紹介します。

グローバルコンテキストは、クライアントや組織、ユーザ等の情報を取得できるWebAPIとなっており、フォーム画面上だけでなく、ビューやHTMLからも実行することができる便利な関数となっています。

以前は『Xrm.Page.contex』と記載するだけでどこからでも利用できていましたが、『Xrm.Page.context』は廃止予定のため、将来的に Dynamics 365 のアップデートをお考えの方で旧式のコーディングをされている方は、これからご紹介する方法に処理を置き換えることをおすすめします。

今回は、Webリソースとして登録したHTMLをダッシュボードに配置して、そこからグローバルコンテキストを利用してユーザ情報の取得を行ってみます。


グローバルコンテキスト(GlobalContext)の利用

外部スクリプトとして登録
グローバルコンテキストをHTMLで利用するためには、HTMLのhead内にグローバルコンテキストを外部スクリプトとして登録する必要があり、以下の様に記述を行います。

<script src="../ClientGlobalContext.js.aspx" type="text/javascript" ></script>

src部分の『../』については、基本的にこのまま使えるかと思いますが、HTML内のIFrameから利用する等、階層がさらに下になる場合は『../../』等、相対パス指定の修正を行ってください。


HTMLの作成
上記の外部スクリプトを含め、今回は以下の様なHTMLを作成してWebリソースとして登録しました。

<html>
<head>
<title>ユーザ情報</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="../ClientGlobalContext.js.aspx" type="text/javascript" ></script>
<script type="text/javascript">
function OnLoad() {
    // グローバルコンテキストのユーザ設定情報を取得
    var userSettings = Xrm.Utility.getGlobalContext().userSettings;
    // ユーザ名を取得して表示
    var userName = document.getElementById("userName");
    userName.innerHTML = "ユーザ名は " + userSettings.userName + " です。";
    // ユーザIDを取得して表示
    var userId = document.getElementById("userId");
    userId.innerHTML = "ユーザIDは " + userSettings.userId + " です。";
}
</script>
</head>
<body onLoad="OnLoad()">
<div id="userName"></div>
<div id="userId"></div>
</body>
</html>

上記は、グローバルコンテキストの『userSettings』を利用して、ユーザの名前とGUIDを取得して画面上に表示するHTMLです。


ダッシュボードに配置して動作確認
HTMLの作成が完了したら、さっそくダッシュボードに配置して画面上で確認してみます。
f:id:westcoastline:20200221172603p:plain

問題なく処理が完了すれば、現在ログインしているユーザの名前とGUIDが表示されます。


参考サイト
モデル駆動型アプリの getGlobalContext (クライアント API 参照) - PowerApps | Microsoft Docs

今回は取得したユーザ情報を画面表示するだけの簡単な処理を行ってみましたが、もちろん取得したユーザ情報はfetch構文やSOAP通信のAPIで利用することができます。

ブログ開設から2周年となりました

こんにちは。

いつも Tech Dynamics 365 (CRM) のブログを読んでいただきありがとうございます。

本日で、当ブログを開設してから2年が経ちました。月日が経つのは早いものですね…。

今後も、Dynamics 365 (CRM) に関する情報を皆さんに提供していければと思いますので、引き続きよろしくお願いいたします。

統一インターフェイス用のモデル駆動型アプリを作成する方法

こんにちは。

今回は、統一インターフェイスに対応したアプリの作成方法をご紹介します。

Dynamics 365 の環境を払い出した直後は、ログインしてすぐのホーム画面で「これはレガシ アプリです。統一インターフェイスでサポートされていない機能やカスタマイズが含まれている可能性があります。最良の結果を得るには、統一インターフェイス用のモデル駆動型アプリを作成してください。」という警告文が表示されていたり、画面左側のサイトマップに不要なエンティティがたくさん並んでいる状態になっているかと思います。
f:id:westcoastline:20200219101223p:plain

これらの警告文や不要なエンティティを非表示にするためには、モデル駆動型アプリ(以下、アプリ)を新しく作成する必要がありますので、以下の手順に沿って作成してみてください。


モデル駆動型アプリの作成

(1) システム管理者の権限を持っているユーザでログインし、 [設定] - [詳細設定] をクリックします。
f:id:westcoastline:20200219101704p:plain

(2) 設定のサイトマップを展開し、[マイ アプリ] をクリックします。
f:id:westcoastline:20200219101903p:plain

(3) [新しいアプリの作成] をクリックします。
f:id:westcoastline:20200219102010p:plain

(4) 作成するアプリの名前、一意の名前を入力して [完了] ボタンをクリックします。
f:id:westcoastline:20200219102337p:plain

(5) アプリデザイナーが開いたら、サイトマップの設定を行います。「構成が見つかりません」と警告文が表示されているかと思いますので、ペンのアイコンをクリックします。
f:id:westcoastline:20200219102622p:plain

(6) エリア名、グループ名を編集します。
f:id:westcoastline:20200219103244p:plain

(7) 「ダッシュボード!」グループにダッシュボードのコンポーネントを追加してみます。新しいサブエリアを選択して、種類から「ダッシュボード」を選択します。既定のダッシュボードを指定したい場合は、既定のダッシュボードのプルダウンから選択してください。
f:id:westcoastline:20200219103523p:plain

(8) 次に、エンティティのコンポーネントを追加してみます。[追加] から、[グループ] をクリックします。
f:id:westcoastline:20200219104218p:plain

(9) グループ名を変更します。今回は、「エンティティ!」とします。
f:id:westcoastline:20200219104305p:plain

(10) 「エンティティ!」グループを選択した状態で、[追加] から、[サブエリア] をクリックします。
f:id:westcoastline:20200219104404p:plain

(11) 新しいサブエリアを選択して、種類から「エンティティ」を選択し、表示したいエンティティをプルダウンから選択します。
f:id:westcoastline:20200219104525p:plain

(12) 他にも表示したいエンティティがあれば、上記(10)~(11)の手順を繰り返して必要なエンティティの追加を行っていきます。
f:id:westcoastline:20200219104726p:plain

(13) エンティティの追加が完了したら、[保存] ボタンをクリックします。
f:id:westcoastline:20200219104824p:plain

(14) サイトマップの保存が完了したら、[公開] ボタンをクリックします。
f:id:westcoastline:20200219104859p:plain

(15) サイトマップの公開が完了したら、アプリデザイナーの画面に戻り、[保存] ボタンをクリックします。
f:id:westcoastline:20200219105217p:plain

(16) アプリの保存が完了したら、[公開] ボタンをクリックします。
f:id:westcoastline:20200219105340p:plain

(17) アプリの公開が完了したら、全ての作業は完了です。ホーム画面を更新し、作成したアプリが表示されていることを確認してクリックします。
f:id:westcoastline:20200219105543p:plain

(18) 「これはレガシ アプリです。統一インターフェイスで…」の警告文が消えており、かつサイトマップのエリアに必要なコンポーネントのみが表示されていることを確認します。
f:id:westcoastline:20200219105703p:plain

Dynamics CRM 2016 以降のアップデートで新しく「アプリ」という概念が導入され、最初はアプリって何?と思ったものですが、要するに必要なコンポーネントを組み合わせてパッケージ化するようなイメージだと理解しました。
これにより、今までひとつしか作れなかったサイトマップが複数作成できるようになり、クリックひとつで切り替えることができるようになったので、使いようによってはかなり便利な機能になるかと思います。