Salesforceの数式項目は、業務の自動化やデータの可視化に非常に役立つ強力な機能です。しかし、その便利さゆえに、設定時に様々なエラーに遭遇することも少なくありません。「数式がどうしても上手くいかない!」とお悩みの方は、ぜひ参考にしてください。
--------------
◾️目次
Salesforce数式でつまずきやすいポイント
よくある間違いと解決策
ケース1:選択リスト項目の扱い
ケース2:参照関係にある親オブジェクトの項目の参照ミス
その他のよくある間違いと解決策
まとめ
--------------
Salesforce数式でつまずきやすいポイント
Salesforceの数式は、一見シンプルに見えても、データ型、関数、構文など、多くのルールを理解しておく必要があります。特に陥りやすいのが、以下のようなポイントです。
- データ型の不一致
- 異なるデータ型の項目同士で演算を行おうとすると、エラーが発生します。例えば、数値と文字列を直接演算しようとすると、プログラムはどのように処理すべきか分からず、エラーを返します。データ型を正しく理解し、適切に変換することが重要です。
- 関数の誤用
- 関数を使用する際には、パラメータの数やデータ型が正しいことを確認する必要があります。また、選択リスト項目に不適切な関数を使用すると、エラーが発生します。関数の仕様をよく読み、正しい使い方をすることが求められます。
- 構文エラー
- プログラムの構文に誤りがあると、実行時にエラーが発生します。スペルミスや不要な記号の入力、引用符の使い方の間違いなどが原因です。コードを慎重に確認し、正しい構文を守ることが重要です。
- 参照項目の理解不足
- 親オブジェクトや関連オブジェクトの項目を正しく参照できていない場合、エラーが発生します。オブジェクト間の関係を理解し、正しい参照を行うことが必要です。ドキュメントやリファレンスを参照し、正確な情報を得ることが大切です。
- 空白や特殊文字
- 知らず知らずのうちに入力してしまっている空白や特殊文字がエラーの原因となることがあります。特に、文字列の前後に余分な空白があると、意図しない動作を引き起こすことがあります。入力内容を確認し、不要な空白や特殊文字を取り除くことが重要です。
よくある間違いと解決策
ケース1:選択リスト項目の扱い
使用例:選択リスト項目(フェーズ)が「受注」になったら「受注」にチェックが入るように数式項目を作りたい
よくある間違い設定
StageName = "受注" IF( StageName = "受注", "受注", "")
エラー: 項目StageNameは選択リスト項目です。選択リスト項目は、特定の関数でのみサポートされます。
選択リスト項目はテキスト型のように数式で使うことができません。
そのため上記のような書き方ではエラーになります。
解決策:
TEXT(選択リスト項目名):選択リスト項目をテキストに変換します。ISPICKVAL(選択リスト項目名, "選択肢の値"):選択リスト項目が特定の値と一致するかどうかを確認します。
1.
ISPICKVAL(picklist_field, text_literal)- 機能: 指定した選択リスト項目 (
picklist_field) の値が、指定した値 (text_literal) と一致するかどうかを評価します。一致する場合はTRUE、一致しない場合はFALSEを返します。 - 用途: 特定の選択リストの値に基づいて条件分岐を行う際に使用します。
ISPICKVAL(StageName, "受注")
2.
TEXT(picklist_field)- 機能: 選択リスト項目 (
picklist_field) の現在の値をテキスト文字列として返します。 - 用途: 選択リストの値を他のテキスト関数と組み合わせて使用したり、テキスト項目に表示したりする場合に使用します。
TEXT(StageName )= "受注"
ケース2:参照関係にある親オブジェクトの項目の参照ミス
例えば、Salesforceの商談(Opportunity)における主従関係の従オブジェクトをカスタムオブジェクトで作成した際、
日付項目のデフォルト値を、親オブジェクトの日付項目から取得することができます。
数式項目で設定を行うことで、フローを使わず自動更新も可能です。
オブジェクトのAPI参照名.項目API参照名
上記の数式が通常利用の数式です。
取引先オブジェクトの項目を商談オブジェクトに設定する場合はこちらを利用します。
上記数式でエラーになるのがカスタムオブジェクトへの設定の際です。
エラー: 項目Opportunityは存在しません。スペルを確認してください。
解決策:
標準オブジェクトの場合は
親オブジェクト名.項目API参照名 で参照できますが、カスタム参照関係項目を通じて親オブジェクトを参照する際には
__r を末尾に追加する必要があります。親オブジェクト名__r.項目API参照名
例:
商談オブジェクトの「完了予定日 (CloseDate)」を参照する場合
Opportunity__r.CloseDate
商談オブジェクトの「選択リスト型(フェーズ(StageName)」を参照する場合
TEXT(Opportunity__r.StageName)
注意点:
数式の選択リストに親オブジェクトの項目が表示されない場合があります。
そのため、直接数式入力欄に記載する必要があります。この点に留意して設定を行ってください。
その他のよくある間違いと解決策
- データ型の不一致
- 間違い: テキスト項目と数値項目を直接加算しようとする (
Text__c + Number__c)。
- 間違い: テキスト項目と数値項目を直接加算しようとする (
Text__c + Number__c
- 解決策:
VALUE()関数でテキストを数値に変換したり、TEXT()関数で数値をテキストに変換するなど、データ型を明示的に変換します 。
VALUE(Text__c) + Number__c Text__c + TEXT(Number__c)
- 例: 商談オブジェクトにて、受注金額(通過型_Amount)を工数(カスタム項目_テキスト型:ProdCost__c)で割って工数単価を出したい
IF(VALUE(InvoiceNumber__c) > 0, Amount / VALUE(InvoiceNumber__c), 0)
この場合、工数を数値型に変更することで、VALUE関数を使わずに利用することができます。
データ型の変更が難しい場合は、上記の数式で設定が可能です。
- 日付/時間型の関数の使い方
- 間違い:
DATE()関数を利用する
- 間違い:
DATE(CreatedDate)
- 解決策:
DATE()関数は、年、月、日の3つの数値をパラメータとして受け取ります (DATE(2025, 10, 26))。日付/時間項目から日付部分のみを取得したい場合はDATEVALUE()関数を使用します。
DATEVALUE(CreatedDate)
Salesforceの「作成日」や「最終更新日」などのデフォルト項目は「日付/時間型」で作成されているため、
日付型として参照するには上記の数式を設定します。
まとめ
Salesforceの数式でエラーが発生した場合、焦らずにエラーメッセージをよく読み、この記事で紹介したような、よくある間違いがないか確認してみてください。
エラーメッセージをコピーして検索をかけることで解決策が見つけられることも多いです。
数式を活用することでより、Salesforceがさらに便利になると思いますので
ぜひ、色々とチャレンジしてみていただけたらと思います。


