シートの一覧と拡張にて、顧客シートに日付型項目を用意します。例として「最終訪問日」という項目名で作成します。

マニフェストファイルは、必須項目であるプラグイン名を設定し、
他パラメータは任意に設定してください。
次にJavaScriptの実装です。大まかな実装内容としては、REST APIのリクエストを実行し対象顧客の「最終訪問日」の値を取得します。
そして現在日付と比較して100日以上経過していれば詳細画面の顧客名の下にメッセージを追加する流れとなります。
実装例を以下に示します。
sample.js
$(window).on("esmsp.customer.detail.load", function (event, param) {
// デフォルト出力項目のdataから、顧客コード(COMPANY_CODE)を取得
$data = param["data"];
for (let i = 0; i < $data.length; i++){
if ($data[i].getAttribute("data-col-name") == "COMPANY_CODE"){
var company_code = $data[i].querySelector("span.tmpl_value").innerText
break;
}
}
// REST APIで「最終訪問日」の値を取得し、現在日時と比較
var request = new XMLHttpRequest(); // リクエストを生成
request.open('GET', 'http://○○○/△△△/rest/v1/entity?obj=customer&columncodes=xxxxx&id='+company_code, true);
request.responseType = 'json';
request.setRequestHeader( "Content-Type", "application/json" ) ;
request.setRequestHeader( "X-Auth-API-Token", "xxxxx" ) ; // 認証情報を設定
request.onload = function () {
// レスポンス返却時の処理
var data = this.response;
var now = new Date(); // 現在日付
var lastVisitDate = Date.parse(data.value.item_data[0].date); // 対象顧客の「最終訪問日」を取得
// 差の日数を求める(86,400,000ミリ秒=1日)
var termDay = Math.floor((now - lastVisitDate) / 86400000); // 小数点以下切り捨て
if(termDay>=100){
// エラーメッセージをヘッダー(顧客名の下部)に追加
let message = "<div class='alert validate'>最終訪問日から` + termDay + `日経過しています。</div>"
$("div.page[name='customer_detail_page']:visible div.detail_header").append(message);
}
};
request.send(); // REST APIを実行
})
上記実装内容を具体的に説明します。
まず、デフォルト出力項目のdataから、REST APIのリクエストに必要となる、「顧客コード」を取得します。
顧客コード項目の「data-col-name」の値は"COMPANY_CODE"です。
また、顧客コード項目の場合は、値はspanタグのinnerTextで取得できます。
続いて、REST API実行の準備です。
まずは、XMLHttpRequestを用いてリクエストを生成します。
次に、生成したXMLHttpRequestオブジェクトにREST APIを利用するための設定を行います。
- メソッドは"GET"で、対象環境のURLを指定します。その際にパラメータとして"obj"、"columncodes"、"id"を付与します。
- "obj"は取得対象のエンティティ名で、今回は顧客シートが対象となるため"customer"を指定します。
- "columncodes"に取得項目として「最終訪問日」の項目コードを指定します。
拡張項目の項目コードは、REST APIの"GET /entities/columns"でエンティティ名を指定して取得することができます。
- "id"には取得対象の顧客コードを指定します。
- リクエストヘッダにContent-Typeと認証情報を設定します。
※REST APIの設定や操作方法については、REST APIのリファレンスを参照ください。
次にレスポンス返却後の処理をonload = function(){}の内部に実装します。
レスポンスのJSONデータから「最終訪問日」の値を取得します。
今回の例では取得項目は「最終訪問日」のみなので、data.value.item_data[0].dateで直接取得しています。
現在日付と取得した「最終訪問日」の差の日数を計算し、100日以上であれば顧客名の下にメッセージを追加する実装となっています。
メッセージに関してですが、divタグのclass属性に"alert"を付与しています。
これにより、メッセージの先頭にエラーアイコンが表示され、メッセージ全体が赤字で表示されるようになります。
なお、顧客詳細画面読み込み時にプラグインの内容を実行させるため、
必ず$(window).on("esmsp.customer.detail.load", function() {}の内部に処理を実装してください。
当該プラグインをzipファイルにパッケージングし、eセールスマネージャーRemixに登録後
「最終訪問日」から100日以上経過した顧客の詳細画面を表示すると、以下のようにメッセージが表示されるようになります。