Administrator 練習問題 Q38
標準の Lead Rating(リードの評価)項目には、Hot、Warm、Cold の選択リスト値があります。新しいリードのリストはエラーなしでインポートされましたが、いくつかのレコードの[評価]項目の値は[未評価]でした。これらのレコードはどのようにしてエラーなしで追加されましたか?
左の○で回答を選択。本文を押すと横線で除外でき、もう一度押すと戻せます。
1つ選択してください(0/1)
正答:A. 制限付き選択リストのチェックボックスがオフになっていました。
解説
前提知識
選択リスト(ピックリスト)
あらかじめ用意した値から選択する項目です。ただし、値セットへの制限が無効な選択リストでは、画面に定義されていない値がAPIやインポートツールなどから登録される場合があります。
制限付き選択リスト(Restricted Picklist)
選択リスト項目の設定にあるチェックボックスです。これをオンにして初めて、値セットにない値の保存が拒否されます。 Salesforce公式は「制限付き選択リストの値は管理者が定義した値のみに限定され、冗長または誤った値の読み込みを防ぐ」と説明しています。 逆に言えば、オフのときは値セットにない値でも入ってしまいます。
データインポートと選択リストの関係
Salesforce公式ヘルプは、インポート時の振る舞いをはっきり書いています。
**制限なしの選択リストでは、データインポートウィザードはインポートファイル内の値をそのまま使う。**制限付き選択リストでは既定値が使われる。
設問の状況を分解する
起きたことを時系列で並べます。
- Lead Rating 項目の値セットは
Hot/Warm/Coldの3つだけ - インポートファイルには
未評価という、値セットにない値が含まれていた - にもかかわらずエラーなしでインポートが完了した この三段論法から導かれる結論はひとつです。 値を取り締まるスイッチ(制限付き選択リスト)がオフになっていた。 管理画面に表示される値セットと、インポート値を値セット内に強制する制限設定は、分けて考える必要があります。
選択肢の検討
A. 制限付き選択リストのチェックボックスがオフになっていました
⭕ 正解
制限が無効な選択リストでは、Data Import Wizardは値セットに一致しないインポート値をそのまま使用します。そのため、未評価 が管理者定義の値セットにない「無効な値」として登録されても、インポートエラーにはなりません。
B. 項目レベルセキュリティがすべてのプロファイルで[表示]になっていた
✕ 項目レベルセキュリティは「誰がその項目を見られるか・編集できるか」を決める設定です。入れられる値の種類には一切関与しません。表示にしていても制限付きがオンなら不正値は弾かれます。
C. グローバル選択リスト値セットを使用して、選択リストを入力しました
△(惜しいが不正解)
むしろ逆です。グローバル選択リスト値セットを使うと、その項目は常に制限付きになります。つまり 未評価 はエラーになっていたはずで、設問の状況と矛盾します。さらに、Lead Rating は標準選択リスト項目です。
D. [すべてのレコードタイプに追加]チェックボックスが選択されました
✕ これは「新しく追加した選択肢を、どのレコードタイプでも使えるようにする」設定です。値セットに登録されている値をどこに見せるかの話であって、値セットにない値を入れられるかどうかとは別の問題です。
管理者としての対処手順
- [設定]→[オブジェクトマネージャ]→[リード]→[項目とリレーション]→[評価]を開く
- 現状の値セットと、[制限付き選択リスト]チェックボックスの状態を確認する
- レポートで[評価]の値ごとの件数を集計し、不正な値を持つレコードを洗い出す
- 不正値のレコードを、正しい値(
Coldなど)に一括更新する - 不正値を正規化したうえで、[制限付き選択リスト]にチェックを入れて保存する
- 今後のインポートでは、値セットのAPI名と一致しているかを事前に検査する
⚠️ 制限を有効にすると、以後、未定義の値を含むインポートや更新はエラーになります。既存の不正値を洗い出して正規化してから運用を切り替えると安全です。
あわせて覚えておきたいポイント
- Data Loader でも同じことが起きます。 Salesforce公式のナレッジ記事は「Data Loader では組織に存在しない選択リスト値を読み込める」と記載しています。
- 制限付きをオンにした状態で不正値を入れようとすると、
INVALID_OR_NULL_FOR_RESTRICTED_PICKLISTというエラーが返ります。このエラー名を覚えておくと、逆向きの問題にも対応できます。 - 複数オブジェクトで同じ選択肢を使い回したいなら、グローバル選択リスト値セットが有効です。自動的に制限付きになるため、データ品質を保ちやすくなります。
出典(Salesforce公式)
- Notes on Importing Data — Data Import Wizardで値セットに一致しない値を読み込むと、制限なし選択リストではインポートファイルの値が使用され、制限付き選択リストでは既定値が使用されることを裏付ける
- Data Loader/Data Import Wizard Adds “Invalid Values” to Picklist — 制限設定が無効な場合、未定義のインポート値が「Invalid Values」として受け入れられることと、制限を有効にすると未定義値を含むインポートや更新がエラーになることを裏付ける
- Picklist Limitations — 制限付き選択リストが管理者定義値以外のAPI読み込みを防ぐことと、グローバル選択リスト値セットが常に制限付きであることを裏付ける
- Data Loader allows invalid picklist values to be created — Data Loaderでも制限が無効なら組織に存在しない値を読み込めること、および制限有効時には定義済みAPI名に照合して不正値をエラーにすることを裏付ける