Skip to main content
Register now for TDX! Join the must-attend event to experience what’s next and learn how to build it.

複数のレコードを変換する

学習の目的

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

  • 変換要素とループ要素のどちらを使用するかを判断する。
  • データテーブルコンポーネントを使用して、複数のレコードを取得して選択する。
  • 変換要素を使用して、選択した複数のデータテーブルを使用可能なコレクションに変換する。
  • 変換要素を使用して、変換元データから変換先データに項目を対応付ける。
  • 数式を使用して、画面コンポーネントの選択内容を変換後のコレクションに対応付ける。
メモ

メモ

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

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

Note

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

変換要素とループ要素

Flow Builder で複数のレコードを変更するには、各レコードを 1 件ずつ変更することもできますが、その方法では非常に非効率です。幸い、Flow Builder には、コレクション内のすべてのレコードをまとめて変更できる 2 つの要素が用意されています。変換要素とループ要素です。

  • 変換要素は、1 つ以上のコンポーネントまたは変数 (単一またはコレクション) の値を自動生成された変数にコピーし、そのコピーの最終的な値を変更します。
  • ループ要素は、コレクション内の複数の値を 1 つずつ反復処理し、それぞれの値を一連の要素に順番に渡してフローを実行します。

変換要素は、説明項目をクリアするなど、レコードのグループに対して同じ変更を行う場合に適しています。コピーされたコレクション内の各値に、同じの変更を簡単に適用できるためです。一方、ループ要素は、ユーザーのグループにメールを送信するなど、レコードのグループに対して一括処理を行う場合に適しています。

ここで、「ループ要素を使えば、レコードのグループを順番に処理できるのだから、ループの中に [Update Records (レコードを更新)] 要素を置いて、複数のレコードを変更できるのでは?」と思うかもしれません。それは可能ではありますが、ベストプラクティスではありません。ループ内で [Update Records (レコードを更新)] 要素を使用すると、SOQL クエリの制限を超えてしまう可能性が高くなるためです。[Update Records (レコードを更新)] 要素は、実行されるたびに 1 回の SOQL クエリとみなされ、フローの構成によっては、わずかなループ回数で制限に達してしまうことがあります。

これまでは、ループ内で割り当て要素を使用し、ループの外で [Update Records (レコードを更新)] 要素を使用して、複数のレコード値を更新していたこともあるでしょう。しかし、この方法も現在では、単独ではベストプラクティスとは見なされていません。一般に、同じ処理を行うループ要素と比べて、変換要素は平均で約 10 倍高速です。また、フローが複雑になるほど、変換要素の方がはるかに高い拡張性を発揮します。その結果、ユーザーにとってより高速で優れた体験を提供できるだけでなく、フローが実行時間制限を超えるリスクも大幅に低減されます。

一般的な目安として、変換要素とループ要素のどちらでも実現できる処理がある場合は、変換要素を使用してください。ループ要素は、変換要素を使用できない場合にのみ使用します。

データテーブルでレコードの選択内容を取得する

単元 1 の例のシナリオである [Choose Steps to Update (更新するステップを選択)] フローに戻りましょう。イネーブルメントチームから、複数のステップの状況を一度に更新できるツールが要求されました。そこで、1 つのプロジェクトから複数のステップを選択し、それらすべてに新しい [Status (状況)] 値を設定できる画面フローを作成します。この手順では、画面要素を作成し、ユーザーがステップを選択できるデータテーブルを追加し、さらに新規状況を選択するための選択リストを用意します。

  1. [Choose Steps to Update (更新するステップを選択)] フローで、[Get Steps (ステップを取得)] 要素の後に画面要素を追加します。
    • [Label (表示ラベル)] に「Select Steps to Update (更新するステップを選択)」と入力します。
      [API Name (API 参照名)] に Select_Steps_to_Update と自動入力されます。
  2. 画面キャンバスにデータテーブルコンポーネントを追加します。
    • [API Name (API 参照名)] に「Select_Steps」と入力します。
    • [Label (表示ラベル)] に「Steps (ステップ)」と入力します。
    • [Source Collection (ソースコレクション)] で [Onboarding Project Steps from Get Steps (Get Steps からのオンボーディングプロジェクトステップ)] を選択します。
  3. [行の設定] をクリックしてセクションを開きます。
    • [Row Selection Mode (行選択モード)] が [Multiple (複数)] に設定されていることを確認します。
    • [Minimum Selection (最小選択数)] に「1」と入力します。
  4. [列の設定] をクリックしてセクションを開きます。
    • [Source Field (ソース項目)] で [Name (名前)] を選択します。
    • [Edit Screen (画面を編集)] ウィンドウ下部の [Done (完了)] ではなく、[Column Options (列オプション)] の [Done (完了)] をクリックします。
      “”
    • [+Add Column (列を追加)] をクリックし、同じ手順で [Status__c] 項目と [Assigned_To__c] 項目の列を追加します。
  5. 画面キャンバスに選択リストコンポーネントを追加します。
    • [Label (表示ラベル)] に「New Status (新規状況)」と入力します。
      [API Name (API 参照名)] に New_Status と自動入力されます。
    • [Require (必須)] を選択します。
    • [Choice (選択肢)] で [New Choice Resource (新規選択肢リソース)] を選択します。
      • [Resource Type (リソース種別)] で [Picklist Choice Set (選択リスト選択肢セット)] を選択します。
      • [API Name (API 参照名)] に「StepStatus」と入力します。
      • [Object (オブジェクト)] で [Onboarding Project Step (オンボーディングプロジェクトステップ)] を選択します。
      • [Data Type (データ型)] で [Picklist (選択リスト)] を選択します。
      • [Field (項目)] で、[Status (状況)] を選択します。
      • [Done (完了)] をクリックします。
  6. [Done (完了)] をクリックして画面キャンバスを閉じます。
  7. フローを保存します。
  8. このモジュールではこのフローの 2 つのバージョンが必要なため、フローを保存した後、このフローのコピーを別のフローとして保存します。ボタンバーで Show menu をクリックし、[Save As New Flow (新しいフローとして保存)] を選択します。
    • [Flow Label (フロー表示ラベル)] に「Choose Steps to Update with Formula (数式を使用して更新するステップを選択)」と入力します。
      [Flow API Name (フロー API 参照名)] に Choose_Steps_to_Update_with_Formula と自動入力されます。
    • [保存] をクリックします。

変換要素

フローが実行されると、データテーブルにはユーザーが選択したステップレコードが保存されます。ただし、すべての要素がすべての画面コンポーネントにアクセスできるわけではありません。たとえば、更新要素はデータテーブルコンポーネントにアクセスできません。そのため、このフローでは、データテーブルで選択された内容を、更新要素から参照できるコレクションに変換する必要があります。そのために使用するのが変換要素です。

手順に入る前に、変換要素について確認しておきましょう。前述のとおり、変換要素は、1 つ以上のコンポーネントまたは変数 (単一またはコレクション) の値を自動生成された変数にコピーし、そのコピーに対して最終的な値の変更も同時に行います。変換要素は、ケーキ作りに例えることができます。

Salesforce のオブジェクトや項目を表す材料 (「Start Date (開始日)」と書かれた牛乳パックや「Contact (取引先責任者)」と書かれた小麦粉の袋など) を、「Transform (変換)」と書かれたボウルで混ぜている Flo Smith。

本当に欲しい最終成果物 (見た目も味も良いケーキ) を作るために、まずは小麦粉や牛乳、卵といった基本的な材料を集めます。すべての材料を組み合わせる必要がありますが、その過程で材料に手を加えつつ、ケーキへと変化させていきます。たとえば、卵を殻付きのまま入れる人はいません。ケーキが食べられなくなってしまいますから。最初に卵の殻を割って中身だけを使いますし、もし殻が入ってしまったら必ず取り除きます。

ケーキ作りと同様に、変換要素を使用すると、複数のデータポイントを組み合わせ、必要に応じて値を変更して、最終的に実用的なデータコレクションを作成できます。

データをある形式から別の形式へ変換する方法は非常に多いため、変換要素はとても柔軟性があります。そのため、1 つのユースケースに対して複数の解決方法が存在する場合もあります。

[Choose Steps to Update (更新するステップを選択)] フローでは、複数の Onboarding Project Steps (オンボーディングプロジェクトステップ) レコードの状況を更新する方法が 2 つあります。どちらの方法も変換要素と更新要素を使用しますが、設定方法は大きく異なります。

次の 2 つのセクションで解説する「ステップの状況を変換」と「ステップ ID を変換」という 2 つの戦略を示したフローチャート。

どちらの方法も正当ですが、将来的に、いずれかの方法がフローの要素やリソースと互換性を持たないという状況に遭遇する可能性もあります。両方の方法を確認することで、どのように変換要素の機能を活用できるのかを理解し、さまざまな状況に対応できるようにしておきましょう。それでは、準備を整えてフローを進めましょう。

数式を使用して値を変換する

最初の方法では、変換要素を使用して、コレクションで選択されたステップレコードの状況を設定します。

変換元から変換先への項目の対応付け

  1. [Select Steps to Update (更新するステップを選択)] 要素の後に、変換要素を追加します。
  2. [Label (表示ラベル)] に「Transform Step Statuses (ステップの状況を変換)」と入力します。
    [API Name (API 参照名)] に Transform_Step_Statuses と自動入力されます。
  3. [Source Data (変換元データ)] ボックスで Add flow resource for source data をクリックします。
    • [Resource (リソース)] で [Select_Steps] 画面コンポーネントを選択します。
    • [Select_Steps] ボックスで、[selectedRows] 行の [>] をクリックして、コレクションで使用可能な項目を表示します。
      データテーブルは、[Onboarding Project Step (オンボーディングプロジェクトステップ)] レコードのコレクション変数から表示および選択できるように設定されています。そのため、変換要素の変換元データとしてこのデータテーブルを選択すると、[Onboarding Project Step (オンボーディングプロジェクトステップ)] オブジェクトのすべての項目を使用できます。
  4. [Target Data (変換先データ)] ボックスで Add flow resource for target data をクリックします。
    • [Data Type (データ型)] で [Record (レコード)] を選択します。
    • [Allow multiple values (collection) (複数の値を許可 (コレクション))] を選択します。
    • [Object (オブジェクト)] で [Onboarding Project Step (オンボーディングプロジェクトステップ)] を選択します。
    • [作成] をクリックします。
  5. [Source Data (変換元データ)] 列で [Id (ID)] 項目にマウスを合わせ、[Id (ID)] 行の ソケット をクリックします。
    [Target Data (変換先データ)] 列のいくつかの行が強調表示されます。これらの行のデータ型は、選択した [Select_Steps] 行と互換性があります。
  6. [Target Data (変換先データ)] 列で、[Id (ID)] 行の 項目を対応付ける をクリックします。
    2 つの列の [Id (ID)] 項目を結ぶ線が表示されます。この線を「対応付け」と呼びます。変換元の [Id (ID)] 項目が、変換先の [Id (ID)] 項目に対応付けられました
    変換元の [Id (ID)] 項目と変換先の [Id (ID)] 項目を結ぶ対応付けの線。
Note

誤った対応付けを削除するには、変換元または変換先側の項目名をクリックし、[Delete (削除)] (ゴミ箱) をクリックします。

数式を追加する

選択した各オンボーディングプロジェクトステップには、[New Status (新規状況)] 画面コンポーネントで選択した状況を設定したいと考えています。[New Status (新規状況)] 画面コンポーネントを直接 [Status (状況)] 項目に対応付けることはできませんが、数式を使用すれば、画面コンポーネントの値を項目に挿入できます。

  1. [Target Data (変換先データ)] 列で [Status__c] 行をクリックします。
    新しく [Add or edit formula (数式を追加または編集)] アイコンが表示されます。
    “”
  2. 数式を追加または編集する をクリックし、[Formula (数式)] を選択します。
    対応付けパネルが [Add Transformation (変換を追加)] パネルに切り替わります。
  3. [Search a field… (項目を検索…)] 項目で [Select Steps to Update (更新するステップを選択)] を選択し、次に [New Status (新規状況)] を選択します。
    [Formula (数式)] 項目には {!New_Status} が表示されます。
  4. [Check Syntax (構文を確認)] をクリックして、数式を検証します。
    [Check Syntax (構文を確認)] ボタンの横には、すでに [Valid (有効)] と表示されている場合がありますが、それは以前の数式に基づく結果です。ボタンをクリックしたあとも [Valid (有効)] と表示されていれば、数式は正しく設定されています。
  5. [Add Transformation (変換を追加)] パネルで データの対応付けに戻る をクリックし、対応付けパネルに戻ります。
  6. フローを保存します。

変換先データの Status__c が、これまでとは異なる対応付けになっていることに注目してください。[New_Status (新規状況)] 画面コンポーネントが、変換先の [Status__c] 値の変換元として [Source Data (変換元データ)] 列に追加されています。

今回は画面コンポーネントを参照しているため、数式を追加または編集する ボタンから [Formula (数式)] を選択しました。一方、すべてのレコードの状況を [Closed (完了)] に設定するなど、静的値を設定したい場合は [Value (値)] を選択します。その後、静的値を入力して [Done (完了)] をクリックします。

“”

これで変換要素は完成です。この要素には、選択された各オンボーディングプロジェクトステップにつき 1 レコードを含むコレクションが作成されています。ただし、ID のみを対応付け、Status__c を変数で設定しているため、変換後のコレクション内のレコードには、この 2 項目のみが含まれます。この変換後のコレクションは、ツールボックスの [Record Collection Variables (レコードコレクション変数)] セクションには表示されませんが、ちゃんと存在しますので問題ありません。

Onboarding Project Steps (オンボーディングプロジェクトステップ) レコードを更新する

最後に、選択されたすべての Onboarding Project Steps (オンボーディングプロジェクトステップ) レコードの状況を更新する要素を作成します。

  1. [Transform Step Statuses (ステップの状況を変換)] 要素の後に、[Update Records (レコードを更新)] 要素を追加します。
  2. [Label (表示ラベル)] に「Update Steps (ステップを更新)」と入力します。
    [API Name (API 参照名)] に Update_Steps と自動入力されます。
  3. [How to Find Records to Update and Set Their Values (更新するレコードを検索してその値を設定する方法)] で [Use the IDs and all field values from a record or record collection (レコードまたはレコードコレクションからの ID およびすべての項目値を使用)] が選択されていることを確認します。
  4. [Record or Record Collection (レコードまたはレコードコレクション)] で [Onboarding Project Steps from Transform Step Statuses ([Transform Step Statuses (ステップの状況を変換)] からのオンボーディングプロジェクトステップ)] を選択します。
  5. フローを保存します。

おつかれさまでした。このフローはこれで完成ですが、次の単元では、レコードコレクションではなくテキストコレクションを使用して、同じ目的を達成する別バージョンのフローを作成します。

リソース

Salesforce ヘルプで Trailhead のフィードバックを共有してください。

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

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