Salesforceのカスタム項目を追加する際、同様の選択リストを複数のオブジェクトに作成したいケースがあります。例えば「都道府県の情報を選択リスト項目にする」ような場合には、どのオブジェクトに対しても同一の選択リスト項目を追加することとなります。その際、都度選択リスト内のリスト値を設定したり、選択リスト項目を変更するとなると、非常に手間がかかります。
そこで利用したいのが、「グローバル選択リスト」です。
「グローバル選択リスト」とは、選択リスト項目のリスト値を1セットとしてテンプレート化したものです。「選択リスト値セット」という設定機能から設定が可能となっています。
ここでは、グローバル選択リストをどのように設定し利用するのか、その手順を紹介します。
グローバル選択リストを設定する
まずはSalesforceへのログイン後、画面右上の歯車アイコンから設定画面を表示します。
メニューから「選択リスト値セット」という設定メニューを表示し、「新規」ボタンをクリックすると、グローバル選択リストの設定画面が表示されます。
テンプレート化したいグローバル選択リストを設定します。
ここまでで、グローバル選択リストとしての設定は完了です。
選択リストの設定時に、グローバル選択リストを指定する
次に、先程設定したグローバル選択リストを利用したいオブジェクト側に対して、選択リストのカスタム項目を追加します。
値は「グローバル選択リストを使用」を選択します。また、プルダウンメニューは「先程設定したグローバル選択リスト」を選択し、設定を保存すれば完了です。
グローバル選択リストを利用して設定すると、その選択項目の設定は以下のような表示になります。
画面右上の「グローバル値セット」の箇所にはグローバル選択リスト名が表示されており、画面下の値表示にはグローバル選択リストの各項目が表示されます。そのすぐ上にある「共有ソース値セットを表示」ボタンは、該当するグローバル選択リストの設定画面へのリンクとなっています。
注意点
グローバル選択リストを利用する際の注意点について、いくつか紹介します。
- グローバル選択リストで設定した複数のオブジェクト項目のうち、一部のオブジェクトに対してだけ項目を若干変更したい(選択リスト1つだけ追加・削除)といった事ができない
グローバル選択リストを利用した選択リスト項目の設定内容をふと変更したくなった際に「共有ソース値セットを表示」から設定変更を行ったとします。その場合、グローバル選択リストを利用しているすべての選択リスト項目に反映されます。
- 定義しているグローバル選択リスト値以外の選択リスト値は保持することができない
これは一見、全く影響無いかと思うかもしれません。通常の選択リスト項目であれば、「値セットで定義された値に選択リストを制限します」のオプションを無効化することで、選択リスト値以外の値を保持することが可能です。グローバル選択リストを利用した場合はそれができません。
問題が発生しうる状況の一例としては、データローダを使う等「外部からレコード値をデータ移行する」といったケースです。グローバル選択リストでは、この方法を利用することができず、あらかじめ移行するデータが「値セットで定義された値のみとなっているか」を確認しておく必要があります。仮に他の値が定義されているレコードがあれば、そのレコードのデータはSalesforce内へ移行することができずにエラーとなってしまいます。
- 同一のグローバル選択リストを利用して設定した項目との間で、値を自動的に共有するわけではない(別途共有する設定が必要)
グローバル選択リストを定義した時点では、グローバル選択リストとしての値を保持していません。グローバル選択リストを利用して設定した各選択リスト項目側で、個別に保持しています。
なお、「グローバル選択リストを利用した選択項目で値の共有をしたい」といった場合もあります。その場合は、1つのオブジェクトに(グローバル選択リストを利用して)選択リスト項目を追加した後に、例えば以下の設定を追加するような対応が別途必要となります。
- 他の関連オブジェクト側では「値を保持するオブジェクト側の選択リスト項目」を参照するような数式項目を追加する
- プロセスビルダーやワークフロー・トリガー等で保持している値を共有したい選択リスト項目側へ代入する
この点については、グローバル選択リストを利用していない通常のカスタム項目と同様の扱いになると考えてください。