目次
はじめに
今回の記事では、Salesforceの自動化機能フローにおける、【カスタムエラー】という機能についてご紹介します。
以前の記事において、ユーザーの入力ミスを事前に防ぎ、Salesforce内のデータ精度を高めることができる【入力規則】という機能をご紹介しました。
今回は入力規則と同じような使い方ができる、フローのカスタムエラーの概要と、基本的な使い方をご紹介をします。
Salesforceフローのカスタムエラーとは?
Salesforceフローの要素である「カスタムエラー」を使うと、特定の条件でレコードが作成/更新/削除された際に、エラーメッセージを表示させることができます。
入力規則でも同じようなことができますが、入力規則では数式や関数の知識が必要です。保存時にエラーとしたい条件を、関数を使用して組み立てる必要がありました。
一方フローのカスタムエラーは、数式や関数を使用せず、直感的に条件を組み立て、実装することが可能です。
フローはSalesforceのローコード開発機能です。ローコード開発と聞くと、難しいのでは?と思われる方もいらっしゃるかもしれませんが、実は簡単に実装することが可能です。
早速見ていきましょう!
Salesforceフローの要件定義から実装までお任せしたい方には、テラテクのエンジニア派遣がおすすめ!
資料ダウンロードはこちら
実装手順
前回の記事と同様に、【商談が失注した場合、必ず失注理由の詳細を入力させる】というシナリオでフローを実装していきます。
「失注理由詳細(reason_details__c)」というカスタム項目を使用しますので、もし同じ操作を試したい方は、商談オブジェクトに上記のカスタム項目を作成してから手順に移ってください!
1.設定画面から、【フロー】を検索し、フロー設定画面に遷移します。画面右上の【新規フロー】ボタンを選択します。
2.はじめから実装していくため、【最初から開始】をクリックし【次へ】を選択。
種別の選択では【レコードトリガフロー】を選択し、【作成】をクリックしましょう。
3.【開始を設定】という画面が出てくるので、下記の通り、設定していきます。
オブジェクトを選択:商談
トリガーを設定:レコードが作成または更新された
エントリ条件を設定:すべての条件に一致(AND)
条件①フェーズ(StageName) 次の文字列と一致する 失注
条件②失注理由詳細(reason_details__c) 次の文字列と一致する {!$GlobalConstant.EmptyString}
※{!$GlobalConstant.EmptyString}は何も入力されていないことを示しています
更新されたレコードでフローを実行するタイミング:条件の要件に一致するようにレコードを更新したときのみ
フローを最適化:高速項目更新
💡解説:【更新されたレコードでフローを実行するタイミング】について
・レコードを更新し、条件の要件に一致するたび ・条件の要件に一致するようにレコードを更新したときのみ
ぱっと見た時に、「違いが分からない…!」と思った方もいるのではないでしょうか。
1つ目の選択肢は、条件以外の項目が更新されたタイミングでもフローが実行されてしまいます。 なので、今回のケースで1つ目の選択肢を選んでしまうと フェーズ・失注理由詳細を触っていなくても、例えば完了予定日を変えただけでフローが実行されてしまうのです…! よって、今回は2つ目の選択肢が妥当といえるでしょう。 |
💡解説:【フローを最適化】について
データがデータベースに「保存される前」実行したいフローの場合、「高速項目更新」を選択します。 一方データがデータベースに「保存された後」実行したいフローの場合、「アクションと関連レコード」を選択します。データベースにデータが登録されると、そのデータに”レコードID”が発行されるため、関連レコードの作成などSalesforce IDを使用したアクションを実行したい場合は「アクションと関連レコード」を選択します。
今回は「失注理由詳細」が空のままで保存されるのを防ぎたい、つまりデータベースに保存される前にデータの保存をブロックしたいですよね。 よって、今回は「高速項目更新」を選択します。 |
4.左サイドバーの【開始】の下にある【+】ボタンをクリックし、<要素を追加>から【カスタムエラー】をクリックします。ここでは、下記のように設定をしていきます。
表示ラベル、API参照名は任意で設定
説明(任意入力):商談が失注した場合は、失注理由詳細を必ず入力させる
エラーメッセージを表示する場所:項目のインラインエラーとして
インラインエラーメッセージの項目:失注理由詳細
エラーメッセージ:項目[フェーズ]が<失注>の場合、項目[失注理由詳細]は必ず入力してください。
<エラーメッセージを表示する場所について>
今回はエラーメッセージを【失注理由詳細】項目の下に表示する設定をしましたが、エラーメッセージを配置したい場所が一つではない場合などは、<レコードページのウィンドウで>を選択しましょう。
ここまでできれば、フローは完成です。
全体図は以下のようになります!
5.作成できたら、【保存】→【有効化】
※有効化を忘れずに!
フローのカスタムエラーが実装できましたら、挙動を画面上で確認してみましょう。
実際に、フェーズが失注で、失注理由が未入力のレコードを作成し、保存ボタンを押してみます。
期待通り、エラーメッセージが表示され、データの保存がブロックされました!👏
では、入力規則で設定した方法と何が違うのか、確認をしてみます。
入力規則では、下記数式を入力規則に設定しました。
ISPICKVAL( StageName , "失注") && ISBLANK( reason_details__c)
※設定方法については、こちらの記事をチェック!
さいごに
設定おつかれさまでした!
ローコードと聞いて不安に思っていた方も、「意外とすんなりできたな…」と思っているのではないでしょうか。
最後にまとめとして、フローのカスタムエラーが入力規則に対してどのような利点があるのかを見ていきましょう。
①直感的操作
数式や関数について理解が浅くても、フローであれば直感的に実装することができます。
これはフローのカスタムエラーを使う最大のメリットといえるでしょう。
<【失注理由詳細】が空欄だったら>という条件を適用させるために、入力規則ではISBLANK( reason_details__c)と数式を組み立てる必要があります。
しかし、フローであれば、クリックベースで条件を指定することでき、入力規則と比べて直感的に操作を行うことが可能です。
②拡張性
フローのカスタムエラーのもう一つの大きな強みは、拡張性です。
入力規則はオブジェクトに依存しているため、条件を追加したり、異なるシナリオに対応するための変更が難しい場合があります。しかし、フローであれば、要件の変化に応じてメンテナンスを容易に行うことができます。
例えば、将来的に商談の条件が変更され、別のオブジェクトや条件が追加される…なんてことがあるかもしれません。その場合、入力規則よりフローのカスタムエラーの方が対応しやすいでしょう。
③複雑なリクエストに対応できる
フローのカスタムエラーは、子オブジェクトのデータを参照したり、複数オブジェクトにまたがった条件判定を行いたい場合など、複雑なリクエストに適しています。
こちらはあまりイメージが湧きにくいかと思いますので、次の記事にて詳しくご紹介したいと思います!
以上、フローのカスタムエラーについてご紹介しました。
Salesforceのフローは直感的な操作が可能であり、柔軟性や拡張性も兼ね備えています。
これにより、ビジネス要件の変化にもスムーズに対応できるため、ぜひ活用していただければと思います。
Salesforceフローの要件定義から実装までお任せしたい方には、テラテクのエンジニア派遣がおすすめ!
資料ダウンロードはこちら