Salesforce Flowの分岐(Decision要素)が期待通りに動作せず、フローの途中で止まったり、異なるパスに進んでしまうケースがあります。特に本番環境に反映する前に問題を発見し、修正することは重要です。この記事では、分岐がうまくいかない原因を体系的に切り分ける方法を、具体的な手順や事例とともに解説します。
【要点】この記事で確認すること
- 最初に見る場所: 分岐条件式の評価結果、参照する項目の値、フローのデバッグログ
- 切り分けの軸: フロー設計(条件式の記述ミス)、データ(参照値の状態・型)、権限(項目レベルセキュリティ・共有設定)
- 注意点: 本番環境に影響を与える前にサンドボックスでテストし、フロー権限やプロファイル変更が必要な場合は管理者に確認する
ADVERTISEMENT
目次
1. 分岐が意図通り動作しない原因の全体像
Salesforce Flowの分岐は、Decision要素で条件式を評価し、True/Falseの結果に応じてパスを分けます。しかし、以下のような原因で期待と異なる分岐になることがあります。
- 条件式の記述ミス: スペルミス、演算子の誤用、関数の使い方の誤り
- データ型の不一致: テキストと数値の比較、日付と文字列の比較など
- 参照する項目の値が空または想定外: レコード作成直後で関連項目が未入力の場合など
- 権限や共有設定による制限: フロー実行ユーザのプロファイルで項目が見えない、または参照不可
- フローのバージョン管理ミス: 意図しない古いバージョンがアクティブになっている
これらの原因を一つずつ確認することで、問題を効率的に特定できます。以下のセクションでは、具体的な確認手順を紹介します。
2. 分岐条件式の記述ミスを確認する手順
まずは条件式そのものに問題がないかを確認します。以下の手順でチェックしてください。
- フローエディタで該当のDecision要素を開き、各条件(Outcome)の式を確認する。
- 条件式で使用している項目名や変数名のスペルが正しいか確認する。特にカスタム項目のAPI名に間違いがないか注意する。
- 比較演算子が適切か確認する。例えば、等価比較は「=」ではなく「==」を使用する(Salesforce Flowでは「=」は代入、等価比較は「==」)。
- 使用している関数の構文が正しいか確認する。例えば、TEXT()、DATEVALUE()、ISPICKVAL() などの引数や閉じ括弧が不足していないか。
- 数式の結果が期待するデータ型になっているか確認する。例えば、数値型の項目と文字列を比較していないか。
特に、選択リスト項目の値を比較する場合、ISPICKVAL関数を使用する必要があります。例えば「ISPICKVAL(Status__c, ‘完了’)」のように記述します。単に「Status__c = ‘完了’」と書くと意図しない動作になります。
よくある記述ミスの例
- テキスト比較に数値を使う: 数値項目(例:金額)をテキストとして比較すると、文字列の辞書順で評価されるため、数値の大小が正しく判定されません。
- 日付の比較でTEXT関数を使ってしまう: 日付項目をTEXT()で変換してから文字列比較すると、日付の大小が正しく判定されません。日付同士は直接比較します。
- AND/ORの括弧不足: 複数条件を組み合わせる場合、括弧で優先順位を明示しないと意図しない評価結果になります。
条件式に問題が見つからない場合は、次にデータの状態を確認しましょう。
3. フローで参照するデータの状態を確認する手順
分岐条件が正しく記述されていても、参照するデータの値が想定と異なると、意図しない分岐になります。以下の手順で実際のデータを確認しましょう。
- フローを開始したレコード(Account、Contact、Caseなど)の該当項目の値をSalesforce UIで確認する。
- フロー内で変数に代入している値があれば、その値をデバッグログで確認する。Debug要素を一時的に追加して値を出力するのも有効です。
- 参照する項目に値が入っていない(NULL)ケースを考慮する。NULLチェックを条件式に含めているか確認する。
- 関連オブジェクトの項目を参照する場合(例:Account.Name)、関連レコードが存在するか、または参照関係が切れていないか確認する。
- レコード作成直後のフロー(トリガされたフロー)では、まだ保存されていない値がある場合がある。項目値の確定タイミングを確認する。
例えば、取引先責任者の役職が「マネージャー」の場合に承認フローへ分岐する条件式があったとします。しかし、取引先責任者レコードの役職項目が実際には「Manager」とスペル違いで保存されていると、条件に一致せず別のパスに進みます。データの実値を必ず確認してください。
NULL値の扱い
条件式で項目が空の場合、ISBLANK()関数を使用して明示的にチェックしないと、意図しない分岐になることがあります。例えば、「Status__c == ‘完了’」という条件式は、Status__cが空の場合はFalseに評価されます。空のケースも含めて条件を網羅する必要があります。
4. ユーザの権限や共有設定による影響の確認
フローが実行されるユーザの権限によって、参照できる項目やレコードが制限される場合があります。特に、項目レベルセキュリティ(FLS)や共有設定が原因で、条件式で参照する項目が見えないケースがあります。
- フローの実行ユーザが誰かを確認する(自動的に実行されるフローは「自動化プロセスユーザ」または「フロー作成者」の場合がある)。
- 実行ユーザのプロファイルで、条件式で参照している項目の参照権限が有効か確認する。
- 項目レベルセキュリティで、実行ユーザのプロファイルがその項目を「参照可能」に設定されているか確認する。
- 参照するレコードの共有設定(OWD、共有ルール)により、実行ユーザがレコードにアクセスできない場合、項目値が空として評価される。対象レコードにアクセス権があるかテストする。
- フローで「参照のみ」の項目を使用する場合、項目が計算項目やロールアップ集計項目の場合、値がまだ計算されていない可能性がある。
例えば、取引先の「評価ランク」という項目が特定のプロファイルのみ参照可能に設定されている場合、他のプロファイルで実行されるフローではその項目が空として扱われます。このような権限起因の問題は、サンドボックスでは発生せず本番だけ出ることがあるため注意が必要です。
管理者に確認すべき事項としては、フローアクセス権、自動化プロセスユーザの権限、項目レベルセキュリティ、共有ルールなどが挙げられます。
5. 本番反映前のトラブルシューティング一覧表
以下の表に、よくある分岐の問題とその確認ポイントをまとめました。本番反映前にこの表を使って総点検することをお勧めします。
| 確認項目 | チェック内容 | 問題が見つかった場合の対策 |
|---|---|---|
| 条件式の構文 | 演算子、関数、括弧の過不足 | 正しい構文に修正し、デバッグで評価結果を確認 |
| データ型の一致 | 比較する値の型が同じか | VALUE()やTEXT()で型を変換する |
| 参照項目の値 | 実際の値が想定通りか、NULLでないか | データを修正するか、NULLチェックを追加 |
| 権限/FLS | 実行ユーザが項目を参照可能か | プロファイル・権限セットで参照権限を付与 |
| 共有設定 | 実行ユーザがレコードにアクセス可能か | 共有ルールの見直し、またはフローで「追跡なし」に変更 |
| フローバージョン | アクティブなバージョンが最新か | 意図したバージョンをアクティブにする |
| デバッグログ | 各Decisionの評価結果を確認 | Debug要素を追加して詳細を出力 |
この表を印刷して、フローリリース前のチェックリストとして活用するとよいでしょう。
6. よくある質問と管理者への依頼事項
Q: フローが保存できません。「条件式が正しくありません」というエラーが出ます。
A: 条件式の構文エラーが原因です。Salesforce Flowの数式エディタでは、フィールド名を正しく入力したか、括弧の対応を確認してください。特に、カスタム項目のAPI名の末尾に「__c」が付いているかチェックしましょう。
Q: 条件式に日付を使うと、期待した分岐になりません。
A: 日付の比較は、文字列ではなく日付型同士で行ってください。例えば、 TODAY() = 項目__c のように直接比較します。また、日付項目に時刻情報が含まれている場合は、DATEVALUE()で日付部分のみ抽出します。
Q: 選択リストの値で分岐したいのですが、ISPICKVAL関数がうまく動作しません。
A: ISPICKVAL(項目__c, ‘値’) の構文で、値は選択リストのラベルではなくAPI名(実際に保存される値)を指定しているか確認してください。選択リストの値は、設定画面の「選択リスト値」で定義された「API名」が実際の値です。
管理者へ依頼すべきこと
- フローアクセス権:フローが「システム権限ありで実行」するか、特定のユーザとして実行するか確認し、必要な権限を付与する。
- 項目レベルセキュリティ:フローの条件式で使用する項目が、実行ユーザのプロファイルで参照可能かを設定する。
- 共有設定:フローが参照するオブジェクトの共有ルールや組織共有デフォルトを確認し、必要に応じて変更する。
- デバッグログの有効化:特定のユーザに対してデバッグログを有効にしてもらい、フローの実行ログを取得する。
7. まとめ
Salesforce Flowの分岐問題は、条件式の記述ミス、データの状態、権限設定の3軸で切り分けることで、原因を効率的に特定できます。本番反映前には、サンドボックスで十分にテストし、デバッグログを確認することが重要です。また、権限や共有設定は、本番環境と開発環境で異なることがあるため、管理者と連携して確認してください。本記事の表と手順を活用して、トラブルのないフローリリースを実現しましょう。
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Office・仕事術の人気記事ランキング
- 【神技】保存せずに閉じたExcel・Wordファイルを復元する!消えたデータを復活させる4つの救出法
- 【Outlook】添付ファイルが「Winmail.dat」に化ける!受信側が困らない送信設定
- 【Word】差し込み印刷で数字の桁を整える!金額にカンマ(桁区切り)を入れる設定
- 【Teams】メッセージを「保存済み」にして後で読む!重要なチャットをブックマークして整理する技
- 【Word】校閲機能の基本!赤字(変更履歴)とコメントで修正を見える化する
- 【PDF】PDFに入力した文字の「フォント・サイズ・色」を変更するプロパティ設定
- 【Excel】文字が入っているセルの「個数」を数える!COUNTA関数の簡単な使い方
- 【Copilot】「サービスに接続できません」エラーの原因切り分けと対処法
- 【PDF】結合するPDFの「用紙サイズ」がバラバラな時、すべてを「A4サイズ」に強制リサイズしてから結合する
- 【Excel】矢印キーで「セルが動かず画面がスクロールする」!ScrollLockの解除方法(ノートPC対応)
