結論:まずこれだけ覚える
検証ルール(入力規則)は、レコードの保存時に走る門番です。画面からの保存だけでなく、APIやデータインポートなどによる保存でも評価されます。
- 管理者が書くのは「こうなっていたらダメ」という数式(エラー条件数式)
- その数式が True を返したら保存を止め、エラーメッセージを表示する
- False なら何も起こらず、そのまま保存される ここが初学者の最大のつまずきポイントです。「正しい状態」ではなく「あってはならない状態」を書きます。 発想が逆になっているだけで、数式は一生完成しません。 正解判定の核となるのは、エラー条件数式、エラーメッセージ、エラーメッセージの表示場所の3点です。作成画面には、このほかルール名、[有効]、説明などの管理項目もあります。
用語をひとつずつ噛み砕く
エラー条件数式とは
項目の値を評価して、True か False を返す式です。Salesforce公式Trailheadは「数式が True になった場合、それはユーザーが入力したデータが無効な値を含んでいることを意味する」と説明しています。 例:完了予定日を今日より前にさせたくない場合
CloseDate < TODAY()
「完了予定日が今日より前」= あってはならない状態。だからこれが True のときに保存を止めます。IF(condition, TRUE, FALSE) と書く必要はありません。条件そのものが True/False を返すからです。
エラーメッセージとは
保存が止まったときにユーザーへ見せる文言です。公式は「どういう入力なら有効なのかを伝える指示を書くこと」を推奨しています。「エラーです」ではなく「完了予定日は今日以降の日付を入力してください」と書きます。
エラーメッセージの表示場所とは
エラーをどこに出すかの指定で、選べるのは次の2つです。
- ページの最上位:レコード全体の上部にまとめて表示する
- 項目:指定した項目のすぐ横に表示する(どの項目が原因か一目でわかる) 公式ヘルプは「項目の横にエラーを表示するには、[項目]を選択して項目を指定する」「エラーの表示場所が項目の場合、その検証ルールは項目の詳細ページにも表示される」と説明しています。
数式項目の設定と混同しない
検証ルールの作成画面には「数式の戻り値の型」という設定はありません。検証ルールの戻り値は常に True/False(Boolean)に決まっているからです。 戻り値の型を選ぶのは、数式項目(Formula Field) を作るときです。こちらは「テキスト」「数値」「通貨」「チェックボックス」などから選びます。名前が似ているので、選択肢に混ぜられると迷います。
| 設定項目 | 検証ルール | 数式項目 |
|---|---|---|
| 数式の戻り値の型を選ぶ | ✕(常にBoolean) | ⭕ |
| エラーメッセージ | ⭕ | ✕ |
| エラーメッセージの表示場所 | ⭕ | ✕ |
| レコードの保存を止める | ⭕ | ✕(値を表示するだけ) |
また、検証ルールには「有効日」や「適用期間」といった設定もありません。あるのは[有効]チェックボックスだけで、オンかオフかの二択です。期間で切り替えたいなら、数式の中に TODAY() を使った条件を書き込みます。
実務での作成手順
- [設定]→[オブジェクトマネージャ]で対象オブジェクトを開く
- [入力規則(検証ルール)]→[新規]をクリックする
- ルール名を入力し、[有効]にチェックを入れる
- エラー条件数式に「あってはならない状態」を書く
- [構文を確認]でエラーがないことを確かめる
- エラーメッセージを、ユーザーが次に何をすべきかわかる文で書く
- エラーメッセージの表示場所を[ページの最上位]か[項目]から選ぶ
- 保存し、実際にNGデータを入れて止まることを確認する
よくある質問
Q. 必須項目にするのと、検証ルールで空欄を弾くのは何が違いますか? ページレイアウトの必須設定は、主にそのページレイアウトを使う画面入力を制御します。検証ルールはAPI、データインポート、自動化からの保存でも評価されるため、入力経路をまたいで同じ条件を適用したい場合に適しています。 Q. 承認プロセスや割り当てルールでは代用できますか? 本来の用途が異なります。承認プロセスは人による承認経路、割り当てルールはリードやケースの所有者割り当てを管理する機能です。単純な項目条件で保存を止める要件には検証ルールが適しています。なお、現在はレコードトリガーフローの[カスタムエラー]要素でも、条件に合う変更をロールバックしてエラーを表示できます。関連レコードを調べるなど、検証ルールだけでは表現しにくい条件ではフローも検討します。
出典(Salesforce公式)
- Optimize Data Entry with Validation Rules(Trailhead) — 「検証ルールは、ユーザーが入力したデータが、保存前に指定した基準を満たしているかを検証する。数式は1つ以上の項目のデータを評価して True または False を返す。True を返した場合、入力されたデータが無効な値を含んでいることを意味する。検証ルールには、無効な値が入力されたときに表示するエラーメッセージも含められる」
- Get Started with Validation Rules(Trailhead) — 数式がTRUEになるとエラーメッセージを表示して保存をブロックすることと、条件式自体がBooleanを返すため
IF(condition, TRUE, FALSE)が不要であることを裏付ける - Tips for Writing Validation Rules — 「検証ルールを定義するとき、エラーの表示場所を[ページの最上位]または[項目]に設定できる」「エラーメッセージには、どういう入力が有効なのかを伝える指示を書く(例:完了予定日は今日より後にしてください)」
- Validation Rules Fields — 入力規則の作成画面にルール名、[有効]、説明、エラー条件数式、エラーメッセージ、エラーの表示場所があることと、項目の横に表示する場合は[項目]を選んで対象項目を指定することを裏付ける
- Custom Error Element — レコードトリガーフローでも、[カスタムエラー]要素を使って変更をロールバックし、レコード全体または項目にエラーを表示できることを裏付けています。