べにおブログ

学んだことを、ゆっくり深く。

数式項目とは何か:保存時に自動計算され、あとから手動編集できない項目

結論:まずこれだけ覚える

Salesforceの「数式項目(Formula Field)」は、他の項目の値をもとに自動的に計算される読み取り専用の項目です。ユーザーが編集画面から直接値を書き換えることは、管理者であっても基本的にできません。「常に自動計算のままでよい値」には数式項目を使い、「初期値は自動計算したいが、あとで人が上書きできるようにしたい値」には数式項目ではなく、項目のデフォルト値に数式を設定する方法を使います。

数式項目とは

数式項目は、項目定義そのものに計算式を持たせる項目タイプです。レコードが保存・表示されるたびに式が再計算され、その結果が表示されます。値は式から導かれるため、編集画面(新規作成・編集ページ)には表示されず、ユーザーが手入力で上書きすることはできません。

デフォルト値の数式とは

一方、「デフォルト値」に数式を設定する方法は、テキストや日付など通常の編集可能な項目に対して、新規作成時の初期値を設定する仕組みです。項目自体は通常の項目のままなので、ユーザーは保存前後に値を変更できます。ただし、デフォルト値はユーザーが新規レコードへ値を入力する前に評価されるため、同じ新規レコード上の別項目を参照することはできません。入力された別項目を基準に値を設定する場合は、Flowなどの自動化を検討します。

数式項目とデフォルト値の数式の使い分け

数式項目デフォルト値の数式
値の決まり方常に式で自動計算新規作成時のみ式で初期値を設定
保存後の手動編集不可(読み取り専用)可能
向いている用途消費税込み金額など、常に一定のルールで計算したい値通常は自動計算でよいが、例外的に人が調整したい値

よくある誤解

「数式項目に権限を与えれば編集できるようになるのでは」と誤解されがちですが、数式項目は項目レベルセキュリティやページレイアウトの設定に関わらず、計算結果を直接編集できません。編集を可能にしたい場合は、数式項目をやめて「通常項目+デフォルト値の数式」または「通常項目+自動化(Flowなど)で値を設定」という設計に変更します。なお、TODAY() のように作成時点だけで決まる初期値はデフォルト値に適しますが、同じレコードへ入力された日付を基準にする処理はFlow向きです。

出典(Salesforce公式)

  • Default Field Values — デフォルト値は新規レコード作成時の初期値であり、ユーザーが変更できることを裏付けています。
  • Default Field Value Considerations — デフォルト値は入力前に評価されるため、同じ新規レコード上の項目を参照できないことを裏付けています。
  • Build a Formula Field — 数式項目が式から計算され、編集ページで直接入力する項目ではないことを裏付けています。