tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:メールテンプレートと詳細ページへのリンクURLについて

メールアラートでメール送信する際に詳細ページなどのリンクを記載したいというケースが良くあると思います。ですが、『https://login.salesforce.com』の部分をテンプレートに直書きすると本番環境とSandbox環境の違いで困ったことになります。


そこで『https://login.salesforce.com』の部分を数式で取得できるか探してみたのですが、うまくいきませんでした。


Twitterでも教えてもらったのですが、やっぱり難しいみたいです。
↓(メールテンプレートの設定でインスタンス取得できないかって話)


数式の関数で動的に取得するのは無理そうなので、多少ましになる方法について確認しておきました。

以下、カスタム設定の方法試しましたが、数式項目まで用意する場合は、URL部分を取得する方法ありました。一番下に追記しました。

カスタム設定をつかったURLの取得

階層型のカスタム設定は数式項目で利用することができます。
f:id:tyoshikawa1106:20151124010631p:plain


こんな感じで『https://login.salesforce.com』の部分をカスタム設定に登録します。本番環境とSandbox環境で"login"と"test"を切り替えて使用します。(画面はマイドメインを有効化した組織でのURLです。)
f:id:tyoshikawa1106:20151124010826p:plain


数式項目にカスタム設定のURLを挿入します。$Setupで挿入可能です。
f:id:tyoshikawa1106:20151124011048p:plain


用意した数式項目をメールテンプレートに差し込みます。
f:id:tyoshikawa1106:20151124011131p:plain


これで詳細ページへのリンクをメールテンプレート内に差し込むことができます。
f:id:tyoshikawa1106:20151124011255p:plain


実際にメールアラートで送信したメールを確認したところ、問題なくリンクURLとして扱われていました。
f:id:tyoshikawa1106:20151124013136p:plain


今回、カスタム設定で対応してみましたが、これはカスタム表示ラベルでも対応可能です。ケース・バイ・ケースの部分がありますが個人的にはこういった設定情報はカスタム設定に持たせる方がいいんじゃないかなと思っています。(カスタム設定の場合、データ型の判別ができるなどのメリットがあります。オブジェクト使用数にカウントされるというデメリットもありますが...)


メールテンプレートの差し込みの種類の部分でカスタム設定やカスタム表示ラベルが挿入できれば一番よかったのですが、その2つは直接挿入できませんでした。数式項目で対応するしかなさそうです。
f:id:tyoshikawa1106:20151124011942p:plain



メールテンプレートのURLはつい固定文字列で指定したくなりますが、カスタム設定やカスタム表示ラベルで本番とSandbox環境を変更できるようにしておくことでよりメンテがやりやすい組織になると思います。また、固定文字列ではなくカスタム設定やカスタム表示ラベルにしておくと一箇所の変更でまとめて変更できるというメリットもあります。


ちなみにApexクラスの場合はURL部分を取得することが可能です。VisualforceやApexトリガなどの開発でURLが必要になった場合はApexで取得するようにしたほうがいいと思います。

追記

数式項目を用意する場合はカスタム設定などは必要ありませんでした。次の記事にまとめました。