Skip to main content
3 月 5 日~ 6 日にサンフランシスコで開催される TDX (Salesforce+ でも配信) で「Developer Conference for the AI Agent Era (AI エージェント時代に向けた開発者向けカンファレンス)」にぜひご参加ください。お申し込みはこちら

変数とデータ要素を組み合わせる

学習の目的

この単元を完了すると、次のことができるようになります。

  • 一部の要素によって生成される変数を使用する。
  • フローで使用するために Salesforce レコードからデータを取得する。
  • [レコードを作成] 要素と [レコードを更新] 要素でレコード変数を使用する。
メモ

メモ

日本語で受講されている方へ
Challenge は日本語の Trailhead Playground で開始し、かっこ内の翻訳を参照しながら進めていってください。Challenge での評価は英語データを対象に行われるため、英語の値のみをコピーして貼り付けるようにしてください。日本語の組織で Challenge が不合格だった場合は、(1) この手順に従って [Locale (地域)] を [United States (米国)] に切り替え、(2) [Language (言語)] を [English (英語)] に切り替えてから、(3) [Check Challenge (Challenge を確認)] ボタンをクリックしてみることをお勧めします。

翻訳版 Trailhead を活用する方法の詳細は、自分の言語の Trailhead バッジを参照してください。

メモ

このバッジは、Flow Builder のスキルを習得するための過程の一部です。「Flow Builder を使用したフローの作成」トレイルでは、初めから終わりまで Flow Builder について学習します。このトレイルで推奨されるバッジの順序に従えば、プロセスの自動化に関する確固たるスキルが身に付き、Flow Builder のエキスパートになります。

要素によって生成される変数

フローにおいて変数は非常に有用ですが、フロー内の個々のデータ値に対して変数を作成しなければならなかったら、変数の作成にうんざりするに違いありません。幸い、一部のフロー要素では固有の変数が作成されるため、ユーザーが作成する必要はありません。このような変数には、作成元要素に対応して [Record type] from [API name] という表示ラベルが付けられているため、常にその変数がどこで作成されたものかがわかります。

たとえば、取引先レコードを取得する [Get Records (レコードを取得)] 要素があり、その API 参照名が Get_Latest_Contact の場合、その要素で作成されるレコード変数の表示ラベルは Contact from Get_Latest_Contact となります。

Contact from Get_Latest_Contact という名前の変数が表示されている Flow Builder のリソースリスト。

メモ

変数を作成する要素が最後にあっても、その変数にはフロー全体で参照とアクセスが可能であることにお気付きかもしれません。これは、フローのしくみにおける技術的な必要性によるもので、すべての変数は最初から最後まで存在します。要素が実行されてデータが取得されるまで、変数には何も含まれていません。

[Get Records (レコードを取得)] 要素とそのしくみ、さらに変数がどのように作成されるかを見ていきましょう。

1 つのレコードから値を取得する

Flow Builder で行うほぼすべてのことにデータが必要です。フローは Salesforce レコードデータにアクセスできますが、どのデータを取得するかを指定する必要があります。レコードの値は一時的に保存され、それ以降のフロー内で使用できます。

Salesforce レコードからデータを取得するには [Get Records (レコードを取得)] 要素を使用します。[Get Records (レコードを取得)] 要素のしくみについての次の動画をご覧ください。

レコード値を取得するときには、1 つのレコードまたはレコードのコレクション全体からのすべての項目値を取得できます。取得した値は 1 つの変数に保存されます。

例を見てみましょう。Pyroclastic, Inc. では、商談に関する重要な取引先責任者を、関連する [商談取引先責任者の役割] オブジェクトで追跡しています。営業部門は、商談が不成立だったときに商談所有者が、意志決定者の役割を持つ取引先責任者に連絡するようにしたいと考えています。Flo はあなたに重要商談が不成立になった場合に ToDo を生成するフローの作成を任せました。意思決定者は商談とは別の [商談取引先責任者の役割] オブジェクトに保存されています。あなたはフローで ToDo を作成する前に、商談取引先責任者の役割から意思決定者を取得する必要があります。

フローを作成する前に、その概要を確認しましょう。

第一に、このフローは金額が 100,000 を超える商談が不成立になったときに実行されます。(これは、商談が更新され、StageName = Closed Lost の条件が満たされた場合に実行されるレコードトリガーフローで実現します。)

第二に、このフローは、役割が意思決定者である [商談取引先責任者の役割] レコードを取得します。(これは、[商談取引先責任者の役割] オブジェクトに対する [Get Records (レコードを取得)] 要素によって実現します。[Get Records (レコードを取得)] 要素では、次の 2 つの検索条件を定義します。(1) [商談取引先責任者の役割] の [商談] = トリガー商談の ID、(2) [商談取引先責任者の役割] の [役割] = 意思決定者)。

第三に、最新の意思決定者のみを保存する必要があります。(これは、[Get Records (レコードを取得)] 要素の次の 3 つの設定によって実現します。(1) 保存するレコード数: 最初のレコードのみ、(2) 並び替え: CreatedDate、(3) 並び替え順: 降順。)

最後に、このフローは商談所有者が意思決定者へのフォローアップを忘れないようにするための ToDo を作成します。(これは、ToDo オブジェクトに対する [レコードを作成] 要素によって実現します。ToDo の項目値を商談の所有者 ID、商談の ID、[商談取引先責任者の役割] の取引先責任者 ID を使用して設定します。)

これで、フローを作成する準備が整いました。

  1. レコードトリガーフローを作成します。
    • オブジェクト: 商談
    • フローをトリガーする条件: レコードが更新された
    • Condition Requirements (条件の要件): [All Conditions Are Met (AND) (すべての条件に一致 (AND))]
    • 条件:
      • Field (項目): StageName
      • Operator (演算子): Equals (次の文字列と一致する)
      • Value (値): Closed Lost (不成立)
    • [+ 条件を追加] をクリックします。
      • Field (項目): 金額
      • Operator (演算子): 以上 
      • Value (値): 100000
    • 更新されたレコードでフローを実行するタイミング: 条件の要件に一致するようにレコードを更新したときのみ
    • フローを最適化: アクションと関連レコード
  2. フローキャンバスで、[Start (開始)] 要素の後のパス上で 要素を追加 をクリックします。[Get Records (レコードを取得)] を選択します。
  3. [Label (表示ラベル)] に Get Decision Maker (意思決定者を取得) と入力します。
    この名前は生成された変数の表示ラベルに使用されるため、内容を示す名前にすることをお勧めします。
  4. [オブジェクト] で [商談取引先責任者の役割] を選択します。
  5. [Condition Requirements (条件の要件)] で [All Conditions Are Met (AND) (すべての条件に一致 (AND))] を選択します。
    ステップ 3 ~ 5 に対応する [New Get Records (新規のレコードの取得)] パネル
  6. [レコードを絞り込む] セクションで、この要素でどのレコードを取得するかを指定する条件を定義します。
    • 最初の条件:
      • Field (項目): OpportunityId
      • Operator (演算子): Equals (次の文字列と一致する)
      • Value (値): $Record> Id
    • 2 番目の条件:
      • Field (項目): Role (ロール)
      • Operator (演算子): Equals (次の文字列と一致する)
      • Value (値): Decision Maker (意思決定者)
メモ

フロー要素内でレコードを絞り込むと、必要なレコードのみを取得できます。これは、リストビューレポートで複数の条件を作成したり、カスタムロジックを定義したりするのに似ています。

ステップ 6 に対応する [New Get Records (新規のレコードの取得)] パネル。

メモ

照会するオブジェクトに多数のレコードがある場合、可能であればすべてのレコードを取得することは避けます。そうしないと、変更すべきでないクローズ済みのレコードを編集することになったり、実行制限に達してフローが失敗したりする可能性があります。

  1. [並び替え順] で [降順] を選択します。
  2. [並び替え] で [CreatedDate] を選択します。
  3. [How Many Records to Store (保存するレコード数)] で [Only the first record (最初のレコードのみ)] を選択します。
    [Only the first record (最初のレコードのみ)] を選択すると、要素の出力変数には 1 つのレコードのみが保存されます。
    [All records (すべてのレコード)] を選択すると、検索条件を満たすすべてのレコードが出力されます。
  4. [How to Store Record Data (レコードデータの保存方法)] で [Automatically store all fields (すべての項目を自動的に保存)] を選択します。
    このオプションはデフォルトで、それには妥当な理由があります。このオプションが有効な場合、レコード変数が自動的に作成され、そこにデータが保存されます。ご安心ください。レコード全体が 1 つの変数に保存されていても、必要に応じて個別の項目値を取得できます。
メモ

[Automatically store all fields (すべての項目を自動的に保存)] は多くの場合に最適なオプションです。作業が減り、データが 1 つの変数に簡略化されるためです。レコードから 1 つの値を取得する必要があるだけの場合でもレコード全体を保存することでフローの制限を超えることはあまりありません。一方、オブジェクトに数百個のカスタム項目がある場合には、負荷が増えることでパフォーマンスに影響が出る可能性があります。その場合には、[Choose fields and let Salesforce do the rest (項目を選択して後は Salesforce に任せる)] を選択して、必要な項目のみを取得します。

ステップ 7 ~ 10 に対応する [New Get Records (新規のレコードの取得)] パネル。

  1. フローを保存します。[Flow Label (フローの表示ラベル)] に Create Follow-Up with Decision Maker (意思決定者へのフォローアップの作成) と入力します。

保存するレコード数と並び替え設定の組み合わせ

[Get Decision Maker (意思決定者を取得)] 要素では 1 人の意思決定者を見つけることが目的であったため、最初のレコードのみを保存することを選択しました。複数のレコードが検索条件に一致した場合、どのようにして保存するレコードを決定するのでしょうか? [並び替え順] と [並び替え] の設定を使用することで、どのレコードが最初になるかを決定できます。ここでは作成日の降順で並び替えたため、フローは最後に作成された意思決定者ロールを返します。

これで、フローでリマインダー ToDo を作成するのに必要な情報を取得できます。次は、その ToDo を作成するために [レコードを作成] 要素を追加します。

取得した値を使用する

[Get Records (レコードを取得)] 要素が実行されると、変数にはデータが保存されます。これでそのデータをフローの要素で必要に応じてあらゆることに使用できます。

例に戻りましょう。フローで意思決定者の取引先責任者の役割のデータを取得しましたが、まだ ToDo を作成する必要があります。[レコードを作成] 要素を作成しましょう。[Get Records (レコードを取得)] 要素で作成された変数 ([Get Decision Maker (意思決定者を取得)] の [Opportunity Contact Role (商談取引先責任者の役割)]) を使用して ToDo の取引先責任者 (Name ID (名前 ID)) を作成します。

  1. [Create Follow-Up with Decision Maker (意思決定者へのフォローアップの作成)] フローで、[Get Decision Maker (意思決定者を取得)] 要素の後に [レコードを作成] 要素を追加します。
    • Label (表示ラベル): Create Task (ToDo の作成)
    • How to set record field values (レコードの項目値の設定方法): Manually (手動)。
    • オブジェクト: ToDo
  2. 新しい ToDo レコードの項目値を定義します。
    • Field (項目): Assigned To ID (割り当て先 ID)、Value (値): Triggering Opportunity (トリガー商談) > Owner ID (所有者 ID) (下にスクロールして、行末に > がない Owner ID (所有者 ID) 項目を選択します。)
    • Field (項目): Priority (優先度)、Value (値): Normal (通常)
    • Field (項目): Status (状況)、Value (値): Not Started (未開始)
    • Field (項目): Subject (件名)、Value (値): Closed Lost Follow-Up (不成立フォローアップ)
    • Field (項目): Related To ID (関連先 ID)、Value (値): Opportunity ID (商談 ID)
    • Field (項目): Name ID (名前 ID)、Value (値): Get Decision Maker (意思決定者を取得) の Opportunity Contact Role (商談取引先責任者の役割) > Contact ID (取引先責任者 ID) (下にスクロールして、行末に > がない [Contact ID (取引先責任者 ID)] 項目を選択します。)
  3. フローを保存します。

フローが有効化された後に、商談が [不成立] に設定されると、このフローによってフォローアップ ToDo が商談と、意思決定者ロールを持つ最後の取引先責任者に対して作成されます。

次の単元では、ユーザーとコミュニケーションを行うその他の要素について学習します。

リソース

ハンズオン Challenge

+500 ポイント

準備を始めましょう

この 単元 は各自のハンズオン組織で実行します。[起動] をクリックして開始するか、組織の名前をクリックして別の組織を選びます。

あなたの Challenge

同じ名前の取引先がすでにある場合に新規リードとしてマークする
Pyroclastic, Inc. では、既存の顧客に関するリードが Salesforce に入力されることがあります。営業部長は、確認して処理できるように、そのようなリードをマークしたいと考えています。

新規リードの会社名項目と名前が一致する取引先がすでにあるかどうかを確認するフローを作成します。一致した場合、その取引先をリードの Possible Matching Account (一致する可能性がある取引先) 項目に追加します。複数一致した場合は、各リードを最新の取引先でマークします。

事前作業: カスタム項目を作成する。
  • Object (オブジェクト): Lead (リード)
  • Data Type (データ型): Lookup Relationship (参照関係)
  • Related To (関連先): Account (取引先)
  • Field Label (項目の表示ラベル): Possible Matching Account (一致する可能性がある取引先)
  • Field Name (項目名): Possible_Matching_Account
  • その他の設定、項目レベルセキュリティ、リードページレイアウトのデフォルト値はそのまま
  • [Leads (リード)] 関連リストをどの Account (取引先) ページレイアウトにも追加しない
  • レコードトリガーフローを作成します。
    • Object (オブジェクト): Lead (リード)
    • Trigger the Flow When (フローをトリガーする条件): A record is created (レコードが作成された)
    • Optimize the Flow for (フローを最適化): Actions and Related Records (アクションと関連レコード)
    • 他の設定はすべてデフォルト値を維持
  • [Get Records (レコードを取得)] 要素を追加します。
    • Label (表示ラベル): Look for Matching Account (一致する取引先を探す)
    • API 参照名: Look_for_Matching_Account
    • Object (オブジェクト): Account (取引先)
    • Filter Account Records (取引先レコードを絞り込み):
      • Field (項目): Name
      • Operator (演算子): Equals (次の文字列と一致する)
      • Value (値): $Record > Company (会社名)
    • Sort Order (並び替え順): Descending (降順)
    • Sort By (並び替え): CreatedDate
    • 他の設定はすべてデフォルト値を維持
  • Look for Matching Account 要素の後に、[Update Records (レコードを更新)] 要素を追加します。
    • Label (表示ラベル): Update Matching Account (一致する取引先を更新)
    • API 参照名: Update_Matching_Account
    • How to Find Records to Update and Set Their Values (更新するレコードを検索してその値を設定する方法): Use the lead record that triggered the flow (フローをトリガーしたリードレコードを使用)
    • Condition Requirements to Update Record (レコードを更新する条件の要件): None—Always Update Record (なし — 常にレコードを更新)
    • 項目値:
      • Field (項目): Possible_Matching_Account__c
      • Value (値): Account from Look_for_Matching_Account (Look_for_Matching_Account 取引先) > Id (取引先 ID)
  • フローを保存します。
    • Label (表示ラベル): Check New Lead for Matching Account (新規リードと一致する取引先の確認)
    • API 参照名: Check_New_Lead_for_Matching_Account
Salesforce ヘルプで Trailhead のフィードバックを共有してください。

Trailhead についての感想をお聞かせください。[Salesforce ヘルプ] サイトから新しいフィードバックフォームにいつでもアクセスできるようになりました。

詳細はこちら フィードバックの共有に進む