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で利用することができます。