Visualforce Emailテンプレートで使用できる関数と、カスタム・オブジェクトの詳細画面URLを差込む方法

Salesfroceからユーザにメールを送る場合に、よく要望に上がるのが、「オブジェクトの詳細画面のURLをメールに差し込んで欲しい」というものです。

たとえば、あるオブジェクトに更新があった場合に、ユーザにメールを送るとして、そのメールに変更のあったオブジェクトへのリンクがあれば、そのリンクをクリックすれば、すぐに詳細画面で確認したり、編集したりすることができますよね。

(詳細画面を見るには、もちろんSalesforceへログインすることが前提です。)

どんなURLを埋め込めばいいのか

良く知られているように、Salesforceでは、あるオブジェクトのURLは、

「https://ns31.salesforce.com/オブジェクトId」

のように表現されます。

オブジェクトIdの部分がオブジェクトごとに異なるのは当然ですが、「ns31.salesforce.com」の部分も割り当てられたSFDCインスタンスによって異なり、場合によっては本番環境とSandbox環境でも異なります。

そのため、直にインスタンス名を書いてしまうと、環境が変わったときに、クリックしても表示できないURLになってしまいますから、動的にホスト名(インスタンス名)を取得しないといけません。

そのためには、VisualforceページやVisualforceEmailテンプレートで使用できる「グローバル変数」を使うことができます。

「グローバル変数」は、環境に依存する組織のデータが格納されている変数で、API呼び出しのホスト名や組織の言語など、様々な値を取得できます。

オブジェクトの詳細画面のURLを差し込むには?

この場合、

{!(LEFT($Api.Enterprise_Server_URL_300, FIND('/services',$Api.Enterprise_Server_URL_300))+relatedTo.Id)}

のように「$Api」が使えます。

「{!$Api.Enterprise_Server_URL_300}」には「https://ns31.salesforce.com/services/Soap/c/30.0/00Dp0000000Cnjc」のようにAPIをコールするURLが入っていますので、LEFT関数で「/services」より左側を取ってくるわけです。

なお、Enterprise_Server_URL_XXXの300はAPI のバージョンを示します。たとえば、{!$Api.Enterprise_Server_URL_260} は、バージョン26.0のAPI のエンドポイントを表しています。

(SalesforceではAPIバージョンによって、エンドポイントが異なります。)

以下に、VisualforceページやVisualforceEmailテンプレートで使用できるグローバル変数と数式の演算子と関数のページを載せておきます。

使用できるグローバル変数

https://help.salesforce.com/articleView?id=dev_understanding_global_variables.htm&language=ja&type=0

使用できる数式の演算子と関数

https://help.salesforce.com/articleView?id=customize_functions.htm&type=0

コメントを残す

サブコンテンツ

このページの先頭へ