🐤

Salesforceの選択リスト はじめての運用ガイド🔰

に公開

1. はじめに ~選択リストとは?~

選択リスト項目は、Salesforce 上で事前に定義した値の中からレコードごとに選択する項目です。
事前に定義された値から選択する項目なので、データの一貫性が保たれます。

今回はそんなSalesforceの 選択リスト(Picklist) について、管理者や実務担当者が知っておくべき機能をまとめました。
パッと見て理解できる内容+実務でハマりやすい落とし穴も紹介します💡

  • 表示ラベル:画面に表示される文字列
  • API 参照名:システム内部で処理される名前(データローダや連携で使用)

2. 選択リストの種類と使い分け

Salesforce の選択リストは、2種類の値セットと項目の選択タイプ の組み合わせで構成されます。

2-1.値セットの種類

  • 通常の選択リスト:項目ごとに独立して値を管理

    • 項目の編集画面から、「グローバル値セット」に昇格することができます。
  • グローバル選択リスト:複数の項目で同じ値セットを共有で管理

公式ヘルプ

2-2.項目の選択タイプ

  • 単一選択:1レコードにつき1つの値のみ選択可能
  • 複数選択:1レコードで複数の値を同時に選択可能
    • データローダで投入する場合は値をセミコロン{;}区切りにする必要があります。
    • レポートで検索条件の際も、選択肢を選択するのではなくテキスト入力です。

2-3.選択リスト値の使い分けの目安

  • 複数の項目で同じ値セットを使いたい場合 → グローバル選択リスト
  • 1レコードで複数の値を選択したい場合 → 複数選択リスト
  • それ以外の用途 → 通常の選択リスト  という使い分けになります。

2-4.補足

  • グローバル選択リストの値は、項目編集画面からではなく「選択リスト値セット」から作成します。
     [設定>オブジェクトおよび項目>選択リスト値セット]
  • グローバル選択リストの時は、自動的に「値セットで定義された値に選択リストを制限します」がTrueになり、Falseにすることはできません。

「値セットで定義された値に選択リストを制限します」の設定をするとどうなるのでしょうか?
他にどんな制御があるのでしょうか?

3. 選択リスト項目の制限と制御

3-1. 値セットの制限

上のセクションで出てきた「値セットで定義された値に選択リストを制限します」をTrueにすると、登録できる値は有効な値のみに制限します。
データローダやフローなど、API経由で値が入る場合もこちらの制限は働きます。

一方、この値がFalseの時は、データローダや連携などで有効でない値もデータ投入が可能です。
その際、Salesforce 上では “無効な値” として保持されます。

⚠️標準項目の例外

  • 商談フェーズ(StageName)や Case Status(ケースステータス)など、標準の選択リスト項目は、この制限を設定することができません。(非制限選択リスト扱いです。)
     → 標準項目で値の制限ができない場合は、運用側で定期的にデータチェックを行うなどの対応が必要です。

3-2. 連動項目による制御

[制御項目]の値に応じて、[連動項目]の選択肢を絞り込むことができる制御です。

  • 連動関係を設定しておくことで、会社として定義した分類ルールを反映できます。
    判断が分かれてしまう可能性がある項目でも、ユーザは規定に沿った選択肢のみから選べるため、
    入力者による解釈のブレを防ぐことができます。

  • 他にも、連動項目の選択肢が大量にある場合、制御項目に応じた適切な選択肢から選ぶことができ、
    ユーザーの選ぶ手間を軽減することができます。

  • レコードタイプにも、連動項目と似た制御を設定できます。
    レコードタイプの選択リスト制限は「ユーザに表示しない値を隠す」制御で、
    連動項目は “制御項目の値に応じて候補を変える” 動的制御のイメージです。
     公式ヘルプ

4. 選択リストの落とし穴(実務であるかもしれない失敗談)

ここからは、実際に現場でハマりやすい例を「落とし穴形式」で紹介します。
データ投入時の挙動を中心にまとめています。

落とし穴①:値セット制限 OFF で無効値が投入される

症状:データはエラーもなく登録できるが、レポートでは検索条件から除外される
原因:値セット制限が OFF のままデータローダや連携で投入した
▷ 例えば、"~"[全角波ダッシュ]が"〜"[全角チルダ]で投入された時、一見問題なくデータが投入されているように見えますが、有効な値と異なるテキストの場合は、無効な値に追加されてしまいます。
▷ Salesforce は、制限が OFF の場合、入力された文字列が項目に存在しないと「無効値」として新たに値を自動生成する仕様になっています。

落とし穴②:API参照名と表示ラベルの混同

症状:選択リスト値を投入しても値が反映されない or 無効値が投入される
原因:データローダでデータを投入する時、表示ラベルで選択リスト値を投入した
▷ Salesforce では選択リスト値を「表示ラベル」ではなく「API参照名」で判断します。
もし表示ラベルは日本語、API参照名は英語で設定している場合はAPI参照名で値を指定する必要があります。
⚠️:項目の「フィールド API 名」ではなく、選択リスト値それぞれに設定されている
「選択リスト値の API 参照名」の方です。

落とし穴③:連動項目の設定漏れ

症状:追加したはずの選択リスト値がレコードに反映されない
原因:連動関係のある項目のリスト値を追加した後、別途連動関係の修正をしなかった
▷ 制御項目を持つ選択リスト値は、追加した時点では「除外される値」として登録される。

まとめ

選択リストは値をシステム的に管理しやすく、分析にもとても扱いやすい有用な項目ですが、
種類・制限・連動・データ投入時の挙動 を理解しておくことが大切です🍀
データ投入時には API参照名を使用し、文字コード、制限や制御の有無 を必ず確認しましょう!!

株式会社アクトビ

Discussion