複数のレコードを更新および取得する
学習の目的
この単元を完了すると、次のことができるようになります。
- レコードトリガーフローで [Update Related Records (関連レコードを更新)] メニューオプションを使用して複数のレコードを更新する。
- コレクション変数を使用する際のベストプラクティスを適用する。
- [Get Records (レコードを取得)] 要素を使用してコレクション変数を作成する。
Trailhead の「Flow Builder を使用したフローの作成」トレイルのバッジを完了している場合、これまでに完了したシナリオのほとんどは、1 回に 1 件のレコードを作成または更新するものでした。ですが、Flow Builder の多くの要素は、複数のレコードを処理するように設計されています。たとえば、複数のケースを作成したり、複数の ToDo を更新したりする場合は、通常、複数レコード機能を使用するのが最適です。複数レコード機能を使用すると、レコードごとに要素を作成するのではなく、すべてのレコードを処理する 1 つの要素を作成できます。
フローを実際に使ってみる
ではここで新しい Trailhead Playground を作成し、このモジュールの手順を実行してみましょう。ページの最下部までスクロールし、Playground 名をクリックして、[Create Playground (Playground を作成)] を選択します。Trailhead Playground を作成するには、通常 3、4 分かかります。また、ハンズオン Challenge を実行するときにも Playground を使用します。
メモ: 文字どおり真新しい Trailhead Playground です。既存の組織または Playground を使用すると、Challenge を行うときに問題が発生することがあります。
次に、以下の手順に従って Playground を起動し、パッケージをインストールしてください。また、ハンズオン Challenge を実行するときにもこのパッケージと Playground を使用します。
Trailhead Playground を起動するために、このページの一番下までスクロールして [Launch (起動)] をクリックします。
-
[パッケージのインストール] タブをクリックします。
![[Package ID (パッケージ ID)] 項目と [Install (インストール)] ボタンが表示された Trailhead Playground の [Install a Package (パッケージをインストール)] タブ。](https://res.cloudinary.com/hy4kyit2a/f_auto,fl_lossy,q_70/learn/modules/multirecord-elements-and-transforms-in-flows/update-and-retrieve-multiple-records/images/ja-JP/22c389008ba93a02918ae0fd1c7800de_kix.o5zom7i19wve.jpg)
- [Package ID (パッケージ ID)] 項目に
04tKa000002f0NXIAYを貼り付けます。
-
[Install (インストール)] をクリックします。
-
[Install for Admins Only (管理者のみのインストール)] を選択し、[Install (インストール)] をクリックします。
アプリケーションのインストールが終了すると、確認ページが表示され、Playground に関連付けられているアドレスにメールが届きます。
順調ですね。では、複数のレコードの更新を開始しましょう。
トリガーされたレコードの変更から複数のレコードを更新する
単純で一般的なユースケースに基づいた例から始めましょう。すべてのビジネスと同様に、Pyroclastic, Inc. でも、ときには顧客を失うことがあります。そのような元顧客には、未完了の ToDo がある未完了のケースが残っていることがよくあります。顧客維持のための商談が不成立となった場合、サポートチームは取引先に関連するすべてのケース ToDo を自動的に延期したいと考えています。これらのケースをクローズするためのフローを作成できます。しかも 1 つの要素だけで済みます。
特定の条件の要件を満たす商談が不成立となったときにフローを実行する必要があるため、レコードトリガーフローが必要です。[Update Records (レコードを更新)] 要素を使用して、その商談に関連するすべての未完了ケースを更新します。未完了のケースのみを更新するように、必ず検索条件を追加してください。すでにクローズされているケースをクローズする必要はありません。相手と長期の取引があった場合は、古くてクローズ済みのケースが多数存在するため、それらのケースまでクローズしてしまうと、処理が遅くなったり、ガバナ制限を超えたりする可能性があります。
[Update Records (レコードを更新)] 要素を作成するときは、[Update Related Records (関連レコードを更新)] メニューオプションを選択して、トリガーされたレコードに関連するレコードを自動的に更新する要素を作成します。
- レコードトリガーフローを作成します。
- [オブジェクト] で [商談] を選択します。
- [Trigger the Flow When (フローをトリガーする条件)] で [A record is updated (レコードが更新された)] を選択します。
- [Set Entry Conditions (エントリ要件を設定)] セクションで次を設定します。
- [Condition Requirements (条件の要件)] で [All Conditions Are Met (AND) (すべての条件に一致 (AND))] を選択します。
- [Field (項目)] で [Name (名前)] を選択します。
- [Operator (演算子)] で [Contains (次の値を含む)] を選択します。
- [Value (値)] に
Retention(顧客維持) と入力します。
-
[条件を追加] をクリックします。
- 2 つ目の [Field (項目)] で [Stage (フェーズ)] を選択します。
- 2 つ目の [Operator (演算子)] で [Equals (次の文字列と一致する)] を選択します。
- 2 つ目の [Value (値)] で [Closed Lost (不成立)] を選択します。
- [Condition Requirements (条件の要件)] で [All Conditions Are Met (AND) (すべての条件に一致 (AND))] を選択します。
- [When to Run the Flow for Updated Records (更新されたレコードでフローを実行するタイミング)] で [Only when a record is updated to meet the condition requirement (条件の要件に一致するようにレコードを更新したときのみ)] を選択します。
- [オブジェクト] で [商談] を選択します。
- キャンバスで
をクリックします。
-
[Update Related Records (関連レコードを更新)] を選択します。
この選択肢を選択すると、[Update Records (レコードを更新)] 要素が作成され、[Update records related to the opportunity record that triggered the flow (フローをトリガーした商談レコードに関連するレコードを更新)] オプションがデフォルトで選択されます。- [Label (表示ラベル)] に「
Close Cases(ケースをクローズ)」と入力します。
[API Name (API 参照名)] にClose_Casesと自動入力されます。
- [How to Find Records to Update and Set Their Values (更新するレコードを検索してその値を設定する方法)] で、[Update records related to the opportunity record that triggered the flow (フローをトリガーした商談レコードに関連するレコードを更新)] が選択されていることを確認します。
- [Records Related to Opportunity (商談に関連するレコード)] で、[Triggering Opportunity (トリガー商談)]、[Account ID (取引先 ID)]、[Cases (ケース)] の順に選択します。
この選択により、フローをトリガーした商談に関連する取引先が特定され、その取引先に関連するすべてのケースが選択されます。
- [Set Filter Conditions (検索条件を設定)] セクションで次を設定します。
- [Condition Requirements to Update Record (レコードを更新するための条件の要件)] で [All Conditions Are Met (AND) (すべての条件に一致 (AND))] を選択します。
- [Field (項目)] で、[Status (状況)] を選択します。
- [Operator (演算子)] で [Does Not Equal (次の文字列と一致しない)] を選択します。
- [Value (値)] で [Closed (クローズ済み)] を選択します。
- [Condition Requirements to Update Record (レコードを更新するための条件の要件)] で [All Conditions Are Met (AND) (すべての条件に一致 (AND))] を選択します。
- [Set Field Values for the Case Records (ケースレコードの項目値を設定)] セクションで次を設定します。
- [Field (項目)] で、[Status (状況)] を選択します。
- [Value (値)] で [Closed (クローズ済み)] を選択します。
- [Field (項目)] で、[Status (状況)] を選択します。
- [Label (表示ラベル)] に「
- フローを保存します。
- [Flow Label (フロー表示ラベル)] に「
Close Account's Cases from Retention Opp Lost(顧客維持のための商談不成立時に取引先のケースをクローズ)」と入力します。
フローの API 参照名は自動入力されます。
- [Flow Label (フロー表示ラベル)] に「
これで完了です。1 つの要素だけで、フローは非常に多くのケースを更新できます。

ただし、これは単純なレコードトリガーのシナリオです。多くのフローでは、さらに複雑な内容を作成する必要があります。
複数レコードを取得する
1 つの変数に複数のレコードを取得して保存するには、単一レコードを取得する要素を使用しつつ、設定を変更します。
ご存じのとおり、[Get Records (レコードを取得)] 要素は単一のレコードを取得し、レコード変数に保存します。ただし、複数のレコードを取得し、それらをすべてコレクション変数に保存するように [Get Records (レコードを取得)] 要素を設定することもできます。
コレクション変数とは
コレクション変数は、複数のテキスト文字列、数値、日付などを保持できる変数です。ただし、保持する値はすべて同じデータ型である必要があります。たとえば、数値データ型のコレクション変数には、日付や英数字のテキストを保存することはできません。一方で、多数の数値を保存することはできます。コレクション変数は、複数のレコードを保持することもでき、それらのレコードに含まれるすべての項目も保持します。
なぜコレクション変数を使用するのでしょうか。コレクション変数は、フロー内で同じ方法で処理される関連情報を保存するために使用します。たとえば、評価や更新を行うレコードのグループ、営業担当に表示する商品の説明のコレクション、同じ通知を受け取る複数のメールアドレスなどです。
[Get Records (レコードを取得)] 要素を使用してコレクション変数を作成する
次に、コレクション変数を使用するシナリオを確認します。Pyroclastic では、Onboarding Project (オンボーディングプロジェクト) と Onboarding Project Step (オンボーディングプロジェクトステップ) という 2 つのカスタムオブジェクトを使用して、新規顧客のオンボーディングプロセスを追跡しています。1 つのオンボーディングプロジェクトには複数のオンボーディングプロジェクトステップが含まれ、通常は 1 人の Pyroclastic チームメンバーが複数のステップを同時に担当します。イネーブルメントチームから、複数のステップの状況を一度に更新できるツールが要求されました。1 つのプロジェクトから複数のステップを選択し、それらすべてに新しい [Status (状況)] 値を設定できる画面フローを作成します。
- 画面フローを作成します。
- プロジェクトの ID を受け取る変数を作成します。
- [API Name (API 参照名)] に
recordIdと入力します。
- [データ型] で [テキスト] を選択します。
- [Availability Outside the Flow (フロー外部での可用性)] で [Available for input (入力で使用可能)] を選択します。
- [API Name (API 参照名)] に
- キャンバスで
をクリックし、[Get Records (レコードを取得)] を選択します。- [Label (表示ラベル)] に「
Get Steps(ステップを取得)」と入力します。
[API Name (API 参照名)] にGet_Stepsと自動入力されます。
- [Object (オブジェクト)] で [Onboarding Project Step (オンボーディングプロジェクトステップ)] を選択します。
- [Condition Requirements (条件の要件)] で [All Conditions Are Met (AND) (すべての条件に一致 (AND))] を選択します。
- [Field (項目)] で [Onboarding Project (オンボーディングプロジェクト)] を選択します。
- [Operator (演算子)] で [Equals (次の文字列と一致する)] を選択します。
- [Value (値)] で [recordId] を選択します。
- [How Many Records to Store (保存するレコード数)] で、[All records (すべてのレコード)] を選択します。
- [How to Store Record Data (レコードデータの保存方法)] で、[Automatically store all fields (すべての項目を自動的に保存)] が選択されていることを確認します。
- [Label (表示ラベル)] に「
- フローを保存します。
- [Flow Label (フロー表示ラベル)] に「
Choose Steps to Update(更新するステップを選択)」と入力します。
[Flow API Name (フロー API 参照名)] にChoose_Steps_to_Updateと自動入力されます。
-
[保存] をクリックします。

- [Flow Label (フロー表示ラベル)] に「
[All records (すべてのレコード)] と [Automatically store all fields (すべての項目を自動的に保存)] を選択すると、[Get Records (レコードを取得)] 要素は、条件に一致するすべてのレコードのすべての項目を 1 つのコレクション変数に保存します。すべてのデータは、各レコードの項目構造と ID を保持したまま、整理された状態で保存されます。新しく作成された [Get Steps (ステップを取得)] 要素によるコレクション変数は、
をクリックして、[Resources (リソース)] リストにある [Record Collection Variables (レコードコレクション変数)] セクションで確認できます。この変数は、[Get Steps (ステップを取得)] 要素によって取得された Onboarding Project Step (オンボーディングプロジェクトステップ) レコードを保持するため、「Onboarding Project Steps from Get Steps (Get Steps から取得したオンボーディングプロジェクトステップ)」という表示ラベルが付けられます。
![[Onboarding Project Steps from Get Steps (Get Steps から取得したオンボーディングプロジェクトステップ)] 変数は、ツールボックスの [Manager (マネージャー)] > [Resources (リソース)] > [Record Collection Variables (レコードコレクション変数)] にあります。](https://res.cloudinary.com/hy4kyit2a/f_auto,fl_lossy,q_70/learn/modules/multirecord-elements-and-transforms-in-flows/update-and-retrieve-multiple-records/images/ja-JP/b720ad70f99af48a7e7b7f312d6c6f9b_kix.vwswfdjf31n7.png)
次の単元では、このフローの作成を続けます。
