簡単な画面フローを作ってSalesforceを自動化!

 2021.05.18 customer_success

こんにちは。新人アドミニストレータのKです。

Salesforce Lightningの「Flow Builderではプログラミングコードの記述なしで複雑な自動化を実現できます。

今回は、新規レコード作成時の重複チェックと作成作業の自動化の設定方法をFlow Builderで画面フローを作成して実現する方法をご紹介します。

同じ作業の繰り返しを減らして仕事の生産性をガンガンあげましょう!

重複データは作りたくないが、 チェックが面倒

Salesforceにお客様の名刺情報を新規登録する際、管理者から「絶対に重複レコードは作るな」と言われているため、毎回以下のような手順で調べていませんか?

  1. 作成予定のレコード名を検索(取引先責任者の例)
  2. 登録されていないことを確認
  3. レコード新規作成

検索時とレコード作成時で同様の内容を入力を行う必要があるため、非常に手間で、非効率です。

フローで解決! ……まずは設計から!

こうした経常的な作業は、フローによって自動化することが可能です!

  1. まずはレコード作成時に毎回行っている作業フローをイメージしてみましょう。
    グループ 1043
  2. 要件とフローの要素を対応させます。
    要 件 要 素
    情報入力 画面
    レコード検索 レコードを取得
    既存レコード有/ 決定
    既存レコードが有の場合、レコード情報表示 画面
    既存レコードが無の場合、レコード新規作成 レコードを作成
    完了画面表示 画面

    以上をもとに、フローを作成していきます。

Flow Builderを起動し、新規リソースを追加する

  1. [設定]フロー新規フローで「Flow Builderを起動します。
    グループ 1085

  2. 画面フローをクリックし、自由形式をクリックします。

  3. ツールボックスマネージャタブをクリックし、新規リソースをクリックします。
    グループ 1044
  4. Flow Builderでは様々な値をリソースとして保存することができます。各項目を以下のように設定して完了をクリックします。
    グループ 1045
    要 件 要 素
    リソース種別 変数
    API参照名 New_Contact
    データ型 レコード
    オブジェクト 取引先責任者
     
  5. 空の取引先責任者レコードのリソースが追加されました。
    グループ 1046

画面要素を追加する

  1. ツールボックスの[要素]タブから、キャンバスに[画面]をドラッグします。
    グループ 1047
  2. [プロパティ]ペインから表示ラベルとAPI参照名を入力します。
    グループ 1048
    項 目
    表示ラベル 取引先責任者情報入力画面
    API参照名 InputScreen_Contact
     
  3. [ナビゲーション]を制御をクリックし、[前へ]と[一時停止]からチェックを外します。
    グループ 1049
  4. 左の[コンポーネント]ペインから[名前]コンポーネントをダブルクリック、または真ん中の[画面]キャンバスへドラッグして、コンポーネントを画面要素へ追加します。
    グループ 1050
  5. プロパティを以下の通り設定します。
    項 目
    API参照名 Input_ContactName
     
  6. [プロパティ]ペインを下までスクロールして、[詳細]をクリックし、[手動割り当て変数]にチェックを入れます。

  7. 各項目が表示されるので、姓と名をレコード変数[New_Contact]の項目と対応させます。クリック操作または直接入力で、以下のとおり設定します。
    グループ 1051
    項 目
    {!New_Contact.LastName}
    {!New_Contact.FirstName}
    この設定により、[名前]コンポーネントの[姓]と[名]に入力した値は、レコード変数[New_Contact]の項目へ保存されます。

  8. 続いて、[メール]コンポーネントを追加します。
    グループ 1052
  9. プロパティを以下の通り設定します。
    グループ 1053
    要 件 要 素
    API参照名 Input_Contact_Email

  10. [メール]コンポーネントも手動割り当て変数とレコード変数を対応させます。
    グループ 1054
    項 目
    {!New_Contact.Email}
     
  11. [完了]をクリックすると、[画面]要素の完成です。今回のフローは、[名前]と[Eメールアドレス]を基準にレコード検索を行うため、コンポーネントは2つのみに設定しました。ご自身の組織のレコード登録状況により、アレンジしてください。

  12. [画面]要素を[開始]と接続し、[保存]しましょう。
    グループ 1056
  13. フローのプロパティを設定しないと保存できないため、以下のとおり設定し、再度[保存]をクリック。
    グループ 1055
    項 目
    {!New_Contact.LastName}
    Input_Contact_Email
     
  14. こまめに保存しましょう♪

[レコードを取得]要素を使ってレコード検索!

  1. フローのキャンバスへレコードを取得要素を追加します。

  2. レコードの取得要素のプロパティを以下のとおり設定します。
    グループ 1057
    項 目
    表示ラベル レコードの検索
    API参照名 Find_Contact
    オブジェクト 取引先責任者
    レコードを取得で取得したレコードは、API参照名を使ってレコード変数として呼び出すことができます。

  3. オブジェクトを指定すると、レコードの取得条件を指定できるようになります。以下のとおり設定しましょう。
    グループ 1058
    ※氏名とメールアドレスの重複レコードがない前提でレコードを取得します。ご自身の組織の状況により適宜ご対応ください。

  4. 完了をクリックし、レコードの取得要素が追加されたことを確認し、画面要素と接続します。
    グループ 1059

ロジック要素[決定]でフローを分岐!

  1. レコードの検索の結果、既存レコードの有無によりフローは分岐します。分岐をフローへ実装するには決定要素を使用するため、決定要素を画面キャンバスへ追加します。

  2. プロパティを以下のとおり設定します。
    項 目
    表示ラベル 既存レコードの有無
    API参照名 Exist_or_Generate
     
  3. 結果から分岐の条件を指定します。
    前述したとおりAPI参照名[Find_Contactを使って、検索に合致したレコードの値をレコード変数として呼び出すことできます。検索条件と一致するレコードが存在しなかった場合は、値は[null]のままのため、以下のとおり条件を設定することによって[既存レコード有り]の場合の結果を作成することができます。
    グループ 1060

    今回は結果2通りしかありませんので、結果は「既存レコード有り」のみ作成します。一致レコードが「無」の場合は、デフォルトの結果としてフローが分岐されます。

  4. 完了をクリックすると、キャンバスに決定要素が追加されますので、レコードの検索要素と接続します。
    グループ 1061

取得したレコード情報を画面に表示

フローが「既存レコード有り」へと分岐した場合の、取得したレコードの情報を画面へ表示します。

  1. キャンバスに画面要素を追加します。

  2. 画面要素のプロパティを以下の通り設定します。
    項 目
    表示ラベル 既存レコードの有無
    API参照名 ResultScreen_Exist

  3.  ナビゲーションを制御前へ一時停止からチェックを外します。

  4. 表示テキストコンポーネントを追加します。
    グループ 1062
  5. プロパティを以下の通り設定します。
    グループ 1063
    要 件 要 素
    API参照名 ResultText_Exist
    テキスト 既存レコードが見つかりました。

    Id:[{!Find_Contact.Id}]


    {!Find_Contact.LastName}

    {!Find_Contact.FirstName}
    メール
    {!Find_Contact.Email}
    表示するレコードの項目については、ご自身のお好みでアレンジしてください。


  6. [完了]をクリックして[レコードの検索]と接続します。
    グループ 1064
  7. [決定コネクタの結果を選択]という画面が出てきますので、[結果]項目を「既存レコード有り」に選択して[完了]をクリックします。
    グループ 1065
  8. [決定]要素から「既存レコード有り」の場合「結果画面_既存」へフローが進行することが確認できます。
    グループ 1066

レコードの新規作成

既存レコードが無かった場合、「取引先責任者情報入力画面」で入力した内容でレコードを新規作成します。

  1. レコードを作成要素をキャンバスへ追加します。

  2. プロパティを以下の通り設定します。
    グループ 1067
    項 目
    表示ラベル 取引先責任者新規作成
    API参照名 Generate_Contact
    レコード New_Contact
    項目[レコード]へレコード変数を設定すると、レコード変数が新規レコードとして保存されます。


  3. [完了]をクリックし、「既存レコードの有無」と接続します。
    グループ 1068
  4. レコードの新規作成が終了したら、「レコードの新規作成の完了」と「作成されたレコードの情報」を[画面]要素で表示しましょう。基本的には「結果画面_既存」と構成は同じです。

  5. [画面]要素をキャンバスへ追加します。
    グループ 1069
  6. 画面のプロパティを以下の通り設定します。
    項 目
    表示ラベル 結果画面_新規作成
    API参照名 ResultScreen_Generate
     
  7. [ナビゲーションを制御]の[前へ]と[一時停止]からチェックを外します。

  8. [表示テキスト]コンポーネントを[画面]キャンバスへ追加して、プロパティを以下のとおり設定します。
    グループ 1070
    要 件 要 素
    API参照名 ResultText_Generate
    テキスト 既存レコードが見つかりませんでした。
    新規レコードを作成しました。​

    Id:[{!New_Contact.Id}]


    {!New_Contact.LastName}

    {!New_Contact.FirstName}
    メール
    {!New_Contact.Email}
    ここで使用するリソースはレコード変数[New_Contactとなります。

  9. 完了]をクリックし、「取引先責任者新規作成」と接続します。
    グループ 1071
  10. [保存]をクリックして、フローを保存しましょう。

フロー完成! 実行してみましょう!

フローの要素の配置はこれで完了となります。実際にフローを起動して動作を確認してみます。

  1. 実行をクリックします。
    グループ 1073
  2. 別タブで画面フローが表示されますので、新規取引先責任者を入力して次へをクリックします。
    グループ 1075
  3. 既存レコードは無いため、新規レコードが作成されました。
    グループ 1074
  4. 完了]をクリックすると最初の画面に戻ります。

  5. もう一度同じ内容を入力し完了をクリックします。
    グループ 1075
  6. 1度目の実行で新規レコードとして作成されたので、2度目は既存レコードとして情報が表示されました。
    グループ 1076
  7. 想定通りの動作が実現できました!
    フローの完成です! 完成したフローは[有効化]をクリックしましょう。
    グループ 1077

フローを配置しよう

完成したフローを配置する方法はいくつかありますが、ここではユーティリティーバーへの配置方法をご紹介いたします。

  1. ユーティリティーバーに配置するとアプリケーションのどのページからでもフローを起動することができます。
    グループ 1078
  2. [設定][アプリケーションマネージャ]→対象アプリケーション(今回は「Sales」)の行の一番右の[▼]をクリックし、[編集]をクリックします。
    グループ 1079
  3. [Lightningアプリケーションビルダー]が起動したら、[ユーティリティ項目(デスクトップのみ)]をクリックし、[ユーティリティ項目を追加]をクリックします。
    グループ 1080
  4. ユーティリティ項目のメニューが表示されるので、[フロー]をクリックします。
    グループ 1081
  5. フローのプロパティを設定する画面が表示されます。
    プロパティを以下の通り設定し、[保存]をクリックします。
    グループ 1082
    項 目
    表示ラベル 取引先責任者新規作成フロー
    フロー 取引先責任者新規作成フロー
     
  6. [Sales]アプリケーションにユーティリティ項目が追加されました。
    グループ 1083
  7. ユーティリティ項目からフローが呼び出せます。
    グループ 1084

最後に…

今回は簡単な画面フローを作成することでレコード新規作成時の作業を自動化してみました。このほかにも様々な要素を組み合わせることによって、より複雑なより実用的なフローを作成することができます。

この記事が少しでも皆さんの日々の業務の助けになれれば幸いです。

Salesforce運用・保守でお悩みならサークレイス