以前こちらの記事でもご紹介しております、とっても便利なURLパラメータ。
SkyVisualEditorの画面を利用する際にも主に以下のパターンで利用します。
- Salesforce標準レイアウトからSkyVisualEditor画面へのパラメータ渡し
- SkyVisualEditor画面からSkyVisualEditor画面へのパラメータ渡し
- SkyVisualEditor画面からSalesforce標準レイアウトへのパラメータ渡し
画面遷移時に初期値が渡せるのでSalesforceのカスタマイズにおいてもはや欠かせない機能ですが、Sandboxで開発する場合には3番めの「SkyVisualEditor画面からSalesforce標準レイアウトへのパラメータ渡し」で注意しなくてはならない点があります。(1番めと2番めはSkyVisualEditorの「URLパラメータ設定」で問題なく稼働します。)
Sandboxと本番環境の違い
カスタム項目やレコードタイプといった、よくURLパラメータで値受け取り側に使用するアイテムのID(HTML上のIDです)が、Sandboxと本番環境で異なる場合があります(Salesforceヘルプリンク)。
従って、SkyVisualEditor上でIDをハードコーディングしてしまった場合、Sandboxでは動いていたのに本番で動かない!といったトラブルが発生する可能性があります。
Sandboxと本番でIDを書き換えてそれぞれデプロイすればいいじゃないか?という声も聞こえてきそうですが、SkyVisualEditor画面(Visualforce, Apexクラス)の本番環境へのデプロイはなるべくSandboxから変更セットで行っていただくことを推奨しているため、この方法はおすすめできません。
そこで、回避方法として活用できるのが「カスタム表示ラベル」や「カスタム設定」の利用です。
今回はより手軽に利用できる「カスタム表示ラベル」を利用した設定方法をご紹介します。
カスタム表示ラベルでトラブル回避する方法
想定シナリオ:
- オブジェクト構成は商談(標準オブジェクト) 1-n 週報(カスタムオブジェクト)
- 商談詳細画面をSkyVisualEditorで構築、週報をデータテーブルで配置。
- 週報詳細画面はSalesforce標準レイアウトを使用
- 週報データテーブルに設置したカスタムボタンから新規週報を登録。商談名はデフォルトで入力されている必要がある(標準のリストボタン「新規◯◯」と同じ挙動)。
Sandbox, SkyVisualEditorの設定:
- ルックアップ項目のIDを調べる
週報の新規登録画面に商談名をURLパラメータで渡すには、HTML上の商談名ルックアップ項目の項目ラベルとIDをURLに仕込んでやる必要があります。パラメータ渡し先の画面(サンプルでは新規週報画面)を開き、HTMLを調べます。
サンプルの環境では、項目ラベルは"CF00N2800000Beo63" 、項目IDは "CF00N2800000Beo63_lkid" でした。 - カスタムボタンにとりあえずURLパラメータを仕込んでみる
この部分をSkyVisualEditorのカスタムボタンにそのまま仕込んでやると、以下のようになります。
動作検証を行う分には構いませんが、この "CF00N2800000Beo63" や "CF00N2800000Beo63_lkid" が本番とSandboxで異なる可能性があるので、ここを「カスタム表示ラベル」を参照するコードに書き換えます。 - カスタム表示ラベルを作成する
先ほどの "CF00N2800000Beo63" を "CF00N2800000Beo63_lkid" をカスタム表示ラベルに記載し、定数の様なものにしてあげます。
Salesforceの設定画面のクイック検索に "カスタム表示ラベル" と入力して設定画面に進みます。
カスタム表示ラベルは2つ作ります。1つは項目ラベル("CF00N2800000Beo63")格納用、もう1つは項目ID("CF00N2800000Beo63_lkid")格納用です。それぞれを「値」に記載して保存します。
簡単な説明、名前は適宜設定してください。 - SkyVisualEditorのカスタムボタンからカスタム表示ラベルを参照させる
Studioに戻り、カスタムボタンのURLを修正します。修正前はこんな感じでしたね。
/a0I/e?CF00N2800000Beo63={!record.Name}&CF00N2800000Beo63_lkid={ID}
修正後はこんな感じになります。
/a0I/e?{!$Label.OppLabel}={!record.Name}&{!$Label.OppId}={ID}
SkyVisualEditorからカスタム表示ラベルを参照する場合、{!$Label.カスタム表示ラベル名}で指定します。 - Sandboxから本番環境に移行する
Sandbox上での設定が終わったら、該当するVisualforceページとApexクラス、Apexテストクラスを本番に送りますが、その際に作成したカスタム表示ラベルも変更セットに入れてリリースします。
本番環境の設定:
- ルックアップ項目のIDを調べる
Sandboxと同様の手順で、HTML上の商談名ルックアップ項目のIDを調査します。 - カスタム表示ラベルを修正する
Sandboxからリリースしたカスタム表示ラベルの値を本番で調べ直したIDに修正します(相違がない場合もあります。その場合は修正不要です。)
いかがでしたでしょうか?
本番とSandboxでそれぞれカスタム表示ラベルの値を管理しなくてはならない手間はありますが、この方法を使うとSkyVisualEditor画面自体の修正は不要となります。
URLパラメータを活用されている場合は是非この方法をお試しください。