Salesforceで数式項目を作成したものの、表示される値が期待と異なることはよくあります。数式の構文ミスや参照元のデータ型、セキュリティ設定など、原因は多岐にわたります。本記事では、数式項目の結果が想定通りにならない場合に、どこを確認すればよいのかを、具体的な手順とともに解説します。エラーメッセージが表示されないケースでも、原因を特定できるようになります。
【要点】この記事で確認すること
- 最初に見る場所: 数式エディタのエラーチェックと数式の構文。シンタックスエラーがないかをまず確認してください。
- 切り分けの軸: 参照先項目のデータ型の一致、参照関係の有効性、プロファイルや共有設定によるアクセス権限の3点で切り分けてください。
- 注意点: 数式項目が他の数式項目を参照している場合は、循環参照や参照先の結果が確定していない可能性もあります。管理者権限がないと変更できない設定もあるため、必要に応じて管理者に確認を依頼してください。
ADVERTISEMENT
目次
1. 数式項目の結果が想定と違う原因の全体像
数式項目の結果が期待通りにならない原因は、大きく分けて以下の4つのカテゴリに分類できます。それぞれのカテゴリごとに確認すべきポイントを押さえることで、効率的に問題を特定できます。
- 構文エラー: 数式の記述に誤りがある場合。関数名のスペルミス、括弧の不一致、演算子の誤用など。
- データ型の不一致: 数式内で異なるデータ型を演算しようとしている場合。例:テキストと数値の加算。
- 参照先の問題: 参照している項目が空(NULL)の場合や、参照関係が途切れている場合。また、項目が削除や変更されているケース。
- セキュリティ設定の影響: ユーザのプロファイルやロール、共有ルールにより、数式項目自体または参照元項目が参照できない場合。項目レベルセキュリティ(FLS)や共有設定が適切でないと、結果が空白になったり、別の値として表示されたりします。
これらの原因は単独で発生することもあれば、複合的に影響することもあります。まずはどのカテゴリに該当するかを切り分けることが重要です。
2. 数式の構文エラーをチェックする手順
最も基本的な確認は、数式エディタのエラーチェック機能を利用することです。以下の手順で構文エラーの有無を確認してください。
- 設定画面から「オブジェクトマネージャー」を開き、該当のオブジェクトを選択します。
- 「項目とリレーション」から、問題の数式項目をクリックします。
- 「数式エディタ」を開き、画面上部にエラーメッセージが表示されていないかを確認します。エラーがある場合は、赤い下線やポップアップで指摘されます。
- 数式をコピーして、一度メモ帳などに貼り付け、括弧の数や関数の引数を目視でも確認します。特にIF関数やCASE関数など、複数の括弧が必要な関数は注意が必要です。
- 「構文チェック」ボタンをクリックして、明示的にチェックを実行することも可能です。エラーがなければ「有効な数式です」と表示されます。
構文エラーの具体例
例えば、数式「IF(Status__c = ‘Active’, ‘Yes’, ‘No’)」でカンマが全角になっているとエラーになります。また、関数名のスペルミス(「TODAY()」を「TODAY」と省略)もエラーの原因です。
3. 参照先項目の値とデータ型を確認する方法
構文エラーがないのに結果がおかしい場合は、参照先の項目に問題がある可能性があります。以下の手順で確認してください。
- 数式項目の編集画面で、数式内で使用しているすべての参照項目をリストアップします。
- 各参照項目のデータ型を確認します。数式内で使用する演算子や関数とデータ型が一致しているか確認してください。例えば、数値項目をテキストとして連結する場合は、TEXT()関数で明示的に変換する必要があります。
- 実際のレコードで、参照項目に値が入力されているかを確認します。特に参照関係項目(ルックアップやマスター詳細)を介している場合、参照先レコードが存在しないとNULLになり、数式結果に影響します。
- 数式項目の「空白の処理」設定を確認します。参照項目がNULLの場合にどう扱うか(空白、0、または別の値)を指定できます。
データ型不一致の具体例
数値項目「Amount__c」とテキスト項目「Currency__c」を連結しようとして「Amount__c + ‘ ‘ + Currency__c」と書くとエラーになります。正しくは「TEXT(Amount__c) + ‘ ‘ + Currency__c」とします。また、日付項目に数値を加算すると、日数として計算されますが、意図と異なる場合があります。
4. セキュリティとアクセス権の影響を確認する
数式項目の結果がユーザごとに異なる、または特定のユーザだけ空白になる場合は、セキュリティ設定が影響している可能性があります。以下の点を確認してください。
項目レベルセキュリティ(FLS)
数式項目自体の表示権限や、参照している項目の表示権限が適切に設定されていないと、ユーザは数式項目を表示できません。管理者はプロファイルや権限セットで「参照可能」に設定する必要があります。
共有ルールとロール階層
数式項目が参照するレコード自体にアクセス権がない場合、数式結果も取得できません。例えば、親オブジェクトの項目を参照する数式項目では、ユーザが親レコードを参照できる必要があります。共有ルールやロール階層を確認してください。
| 状況 | 想定結果 | 実際の結果 | 考えられる原因 |
|---|---|---|---|
| 特定のユーザのみ空白 | 数値が表示される | 空白 | プロファイルのFLSで数式項目が「参照不可」になっている |
| 一部レコードのみ異なる | 全レコードで同じ計算結果 | レコードによって値が変わる | 参照項目の値がNULL、または参照関係が存在しない |
| 数式がエラーにならないが値が0 | 計算結果が正の数 | 0 | データ型の自動変換で数値が丸められた、または NULL が0として扱われた |
5. 数式の評価順序と計算タイミングに関する注意点
数式項目はレコードが保存されるたびに再計算されます。ただし、関連オブジェクトの変更が即座に反映されない場合があります。また、数式内で使用する関数によっては、評価のタイミングが異なるものがあります。
- クロスオブジェクト数式: 参照関係をたどる場合、参照先レコードの保存タイミングに依存します。例えば、取引先責任者の数式から取引先の項目を参照する場合、取引先が更新されても取引先責任者の数式は、取引先責任者自身が保存されるまでは更新されません。
- 集計項目との違い: 集計項目(ロールアップサマリー項目)はスケジュール更新やトリガー更新がありますが、数式項目は常にリアルタイム計算です。ただし、数式内で集計関数(例:BLANKVALUE)を使用する場合は注意が必要です。
- 数式のネストと循環参照: 数式Aが数式Bを参照し、数式Bが数式Aを参照する循環参照はエラーになります。また、数式が深くネストされていると、Salesforceの制限(例:最大5レベルまでの参照)に引っかかることがあります。
6. よくある失敗パターンとその対処法
現場でよく見られる失敗パターンをいくつか紹介します。当てはまるものがないか確認してください。
パターン1:数式内で項目名を間違えている
API参照名が正しいかどうかは、数式エディタの「挿入」機能を使って選択することで防げます。手入力する場合は、大文字小文字も正確に入力してください。
パターン2:IF関数の条件が常に偽になる
例えば「IF(Status = ‘Active’, 100, 200)」とした場合、Statusが ‘active'(小文字)だと偽となり、200が返ります。Salesforceの比較演算子は大文字小文字を区別するため、値の統一が必要です。PICKLIST値はラベルとAPI名の違いにも注意してください。
パターン3:通貨項目の丸め問題
通貨項目は小数点以下の桁数が決まっています。数式で除算を行うと、結果が自動的に丸められることがあります。必要な場合はROUND関数を使用してください。
パターン4:日付/時間関数のタイムゾーン
TODAY()やNOW()は組織のタイムゾーンに依存します。ユーザのタイムゾーンと異なる場合、想定と異なる日付になることがあります。システム日付とユーザの認識の差に注意してください。
7. まとめ
数式項目の結果が想定と違う場合、まずは構文エラーがないかを数式エディタで確認します。次に参照先項目のデータ型と値、セキュリティ設定を順に検証することで、原因を特定できます。この切り分け手順を習慣化すれば、トラブルシューティングの時間を大幅に短縮できるでしょう。どうしても解決しない場合は、Salesforceの管理者やヘルプドキュメントを参照してください。数式の仕様を理解し、適切な関数を使い分けることが、正確な項目設計につながります。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Office・仕事術の人気記事ランキング
- 【Outlook】添付ファイルが「Winmail.dat」に化ける!受信側が困らない送信設定
- 【Teams】メッセージを「保存済み」にして後で読む!重要なチャットをブックマークして整理する技
- 【神技】保存せずに閉じたExcel・Wordファイルを復元する!消えたデータを復活させる4つの救出法
- 【Word】差し込み印刷で数字の桁を整える!金額にカンマ(桁区切り)を入れる設定
- 【Copilot】「サービスに接続できません」エラーの原因切り分けと対処法
- 【Word】校閲機能の基本!赤字(変更履歴)とコメントで修正を見える化する
- 【PDF】PDFに入力した文字の「フォント・サイズ・色」を変更するプロパティ設定
- 【PDF】PDFのサムネイルプレビューが表示されない!エクスプローラーの設定とAcrobat環境設定
- 【Teams】会議の「参加者リスト」を出席後にダウンロードする!誰が参加したか確認する手順
- 【PDF】結合するPDFの「用紙サイズ」がバラバラな時、すべてを「A4サイズ」に強制リサイズしてから結合する
