こんにちは。新人アドミニストレータのKです。
Salesforce Lightningの「Flow Builder」ではプログラミングコードの記述なしで複雑な自動化を実現できます。
今回は、新規レコード作成時の重複チェックと作成作業の自動化の設定方法をFlow Builderで画面フローを作成して実現する方法をご紹介します。
同じ作業の繰り返しを減らして仕事の生産性をガンガンあげましょう!
重複データは作りたくないが、 チェックが面倒
Salesforceにお客様の名刺情報を新規登録する際、管理者から「絶対に重複レコードは作るな」と言われているため、毎回以下のような手順で調べていませんか?
- 作成予定のレコード名を検索(取引先責任者の例)
- 登録されていないことを確認
- レコード新規作成
検索時とレコード作成時で同様の内容を入力を行う必要があるため、非常に手間で、非効率です。
フローで解決! ……まずは設計から!
こうした経常的な作業は、フローによって自動化することが可能です!
- まずはレコード作成時に毎回行っている作業フローをイメージしてみましょう。

- 要件とフローの要素を対応させます。
要 件 |
要 素 |
情報入力 |
画面 |
レコード検索 |
レコードを取得 |
既存レコード有/無 |
決定 |
既存レコードが有の場合、レコード情報表示 |
画面 |
既存レコードが無の場合、レコード新規作成 |
レコードを作成 |
完了画面表示 |
画面 |
以上をもとに、フローを作成していきます。
Flow Builderを起動し、新規リソースを追加する
- [設定]→[フロー]→[新規フロー]で「Flow Builder」を起動します。

- [画面フロー]をクリックし、[自由形式]をクリックします。
- [ツールボックス]の[マネージャ]タブをクリックし、[新規リソース]をクリックします。

- Flow Builderでは様々な値をリソースとして保存することができます。各項目を以下のように設定して[完了]をクリックします。

要 件 |
要 素 |
リソース種別 |
変数 |
API参照名 |
New_Contact |
データ型 |
レコード |
オブジェクト |
取引先責任者 |
- 空の取引先責任者レコードのリソースが追加されました。

画面要素を追加する
- ツールボックスの[要素]タブから、キャンバスに[画面]をドラッグします。

- [プロパティ]ペインから表示ラベルとAPI参照名を入力します。

項 目 |
値 |
表示ラベル |
取引先責任者情報入力画面 |
API参照名 |
InputScreen_Contact |
- [ナビゲーション]を制御をクリックし、[前へ]と[一時停止]からチェックを外します。

- 左の[コンポーネント]ペインから[名前]コンポーネントをダブルクリック、または真ん中の[画面]キャンバスへドラッグして、コンポーネントを画面要素へ追加します。

- プロパティを以下の通り設定します。
項 目 |
値 |
API参照名 |
Input_ContactName |
- [プロパティ]ペインを下までスクロールして、[詳細]をクリックし、[手動割り当て変数]にチェックを入れます。
- 各項目が表示されるので、姓と名をレコード変数[New_Contact]の項目と対応させます。クリック操作または直接入力で、以下のとおり設定します。

項 目 |
値 |
姓 |
{!New_Contact.LastName} |
名 |
{!New_Contact.FirstName} |
この設定により、[名前]コンポーネントの[姓]と[名]に入力した値は、レコード変数[New_Contact]の項目へ保存されます。
- 続いて、[メール]コンポーネントを追加します。

- プロパティを以下の通り設定します。

要 件 |
要 素 |
API参照名 |
Input_Contact_Email |
- [メール]コンポーネントも手動割り当て変数とレコード変数を対応させます。

項 目 |
値 |
値 |
{!New_Contact.Email} |
- [完了]をクリックすると、[画面]要素の完成です。今回のフローは、[名前]と[Eメールアドレス]を基準にレコード検索を行うため、コンポーネントは2つのみに設定しました。ご自身の組織のレコード登録状況により、アレンジしてください。
- [画面]要素を[開始]と接続し、[保存]しましょう。

- フローのプロパティを設定しないと保存できないため、以下のとおり設定し、再度[保存]をクリック。

項 目 |
値 |
姓 |
{!New_Contact.LastName} |
名 |
Input_Contact_Email |
- こまめに保存しましょう♪
[レコードを取得]要素を使ってレコード検索!
- フローのキャンバスへ[レコードを取得]要素を追加します。
- [レコードの取得]要素のプロパティを以下のとおり設定します。

項 目 |
値 |
表示ラベル |
レコードの検索 |
API参照名 |
Find_Contact |
オブジェクト |
取引先責任者 |
「レコードを取得」で取得したレコードは、API参照名を使ってレコード変数として呼び出すことができます。
- [オブジェクト]を指定すると、レコードの取得条件を指定できるようになります。以下のとおり設定しましょう。

※氏名とメールアドレスの重複レコードがない前提でレコードを取得します。ご自身の組織の状況により適宜ご対応ください。
- [完了]をクリックし、「レコードの取得」要素が追加されたことを確認し、[画面]要素と接続します。

ロジック要素[決定]でフローを分岐!
- レコードの検索の結果、既存レコードの有無によりフローは分岐します。分岐をフローへ実装するには[決定]要素を使用するため、[決定]要素を画面キャンバスへ追加します。
- プロパティを以下のとおり設定します。
項 目 |
値 |
表示ラベル |
既存レコードの有無 |
API参照名 |
Exist_or_Generate |
- [結果]から分岐の条件を指定します。
前述したとおりAPI参照名[Find_Contact]を使って、検索に合致したレコードの値をレコード変数として呼び出すことできます。検索条件と一致するレコードが存在しなかった場合は、値は[null]のままのため、以下のとおり条件を設定することによって[既存レコード有り]の場合の[結果]を作成することができます。

今回は[結果]は2通りしかありませんので、[結果]は「既存レコード有り」のみ作成します。一致レコードが「無」の場合は、[デフォルトの結果]としてフローが分岐されます。
- [完了]をクリックすると、キャンバスに[決定]要素が追加されますので、[レコードの検索]要素と接続します。

取得したレコード情報を画面に表示
フローが「既存レコード有り」へと分岐した場合の、取得したレコードの情報を画面へ表示します。
- キャンバスに[画面]要素を追加します。
- [画面]要素のプロパティを以下の通り設定します。
項 目 |
値 |
表示ラベル |
既存レコードの有無 |
API参照名 |
ResultScreen_Exist |
- [ナビゲーションを制御]の[前へ]と[一時停止]からチェックを外します。
- [表示テキスト]コンポーネントを追加します。

- プロパティを以下の通り設定します。

要 件 |
要 素 |
API参照名 |
ResultText_Exist |
テキスト |
既存レコードが見つかりました。
Id:[{!Find_Contact.Id}]
姓 {!Find_Contact.LastName} 名 {!Find_Contact.FirstName} メール {!Find_Contact.Email} |
表示するレコードの項目については、ご自身のお好みでアレンジしてください。
- [完了]をクリックして[レコードの検索]と接続します。

- [決定コネクタの結果を選択]という画面が出てきますので、[結果]項目を「既存レコード有り」に選択して[完了]をクリックします。

- [決定]要素から「既存レコード有り」の場合「結果画面_既存」へフローが進行することが確認できます。

レコードの新規作成
既存レコードが無かった場合、「取引先責任者情報入力画面」で入力した内容でレコードを新規作成します。
- [レコードを作成]要素をキャンバスへ追加します。
- プロパティを以下の通り設定します。
項 目 |
値 |
表示ラベル |
取引先責任者新規作成 |
API参照名 |
Generate_Contact |
レコード |
New_Contact |
項目[レコード]へレコード変数を設定すると、レコード変数が新規レコードとして保存されます。
- [完了]をクリックし、「既存レコードの有無」と接続します。

- レコードの新規作成が終了したら、「レコードの新規作成の完了」と「作成されたレコードの情報」を[画面]要素で表示しましょう。基本的には「結果画面_既存」と構成は同じです。
- [画面]要素をキャンバスへ追加します。

- 画面のプロパティを以下の通り設定します。
項 目 |
値 |
表示ラベル |
結果画面_新規作成 |
API参照名 |
ResultScreen_Generate |
- [ナビゲーションを制御]の[前へ]と[一時停止]からチェックを外します。
- [表示テキスト]コンポーネントを[画面]キャンバスへ追加して、プロパティを以下のとおり設定します。

要 件 |
要 素 |
API参照名 |
ResultText_Generate |
テキスト |
既存レコードが見つかりませんでした。 新規レコードを作成しました。
Id:[{!New_Contact.Id}]
姓 {!New_Contact.LastName} 名 {!New_Contact.FirstName} メール {!New_Contact.Email} |
ここで使用するリソースはレコード変数[New_Contact]となります。
- [完了]をクリックし、「取引先責任者新規作成」と接続します。

- [保存]をクリックして、フローを保存しましょう。
フロー完成! 実行してみましょう!
フローの要素の配置はこれで完了となります。実際にフローを起動して動作を確認してみます。
- [実行]をクリックします。

- 別タブで画面フローが表示されますので、新規取引先責任者を入力して[次へ]をクリックします。

- 既存レコードは無いため、新規レコードが作成されました。

- [完了]をクリックすると最初の画面に戻ります。
- もう一度同じ内容を入力し[完了]をクリックします。

- 1度目の実行で新規レコードとして作成されたので、2度目は既存レコードとして情報が表示されました。

- 想定通りの動作が実現できました!
フローの完成です! 完成したフローは[有効化]をクリックしましょう。

フローを配置しよう
完成したフローを配置する方法はいくつかありますが、ここではユーティリティーバーへの配置方法をご紹介いたします。
- ユーティリティーバーに配置するとアプリケーションのどのページからでもフローを起動することができます。

- [設定]→[アプリケーションマネージャ]→対象アプリケーション(今回は「Sales」)の行の一番右の[▼]をクリックし、[編集]をクリックします。

- [Lightningアプリケーションビルダー]が起動したら、[ユーティリティ項目(デスクトップのみ)]をクリックし、[ユーティリティ項目を追加]をクリックします。

- ユーティリティ項目のメニューが表示されるので、[フロー]をクリックします。

- フローのプロパティを設定する画面が表示されます。
プロパティを以下の通り設定し、[保存]をクリックします。

項 目 |
値 |
表示ラベル |
取引先責任者新規作成フロー |
フロー |
取引先責任者新規作成フロー |
- [Sales]アプリケーションにユーティリティ項目が追加されました。

- ユーティリティ項目からフローが呼び出せます。

最後に…
今回は簡単な画面フローを作成することでレコード新規作成時の作業を自動化してみました。このほかにも様々な要素を組み合わせることによって、より複雑なより実用的なフローを作成することができます。
この記事が少しでも皆さんの日々の業務の助けになれれば幸いです。