最初にリリースノートを読んでも意味を理解できず、自分の検証組織で遊びつつフローを作ってみてようやく理解しても実用的な例が浮かばず(好みの問題もあるかもしれません)、そうこうしているうちに時が経ってしまいましたが、このままネタ帳から記事に昇華できずに2024年を終えるのは心残りなので、記事にすることにしました。
一度に数件単位で、同じ参照先を持ちつつ内容の異なるレコードを作成/更新/削除を行うような場合に、こちらのフローを用意するとユーザーさんに喜ばれるかもしれません。
本日は一番シンプルな「レコードの新規作成」の例をご紹介します。
(更新、削除パターンも書く予定です)
やりたいこと
前提
・塾で生徒とテスト結果をSalesforce上で管理している。
・主従関係によって生徒(カスタムオブジェクト)を参照するテスト結果(カスタムオブジェクト)があり、理解度を確認するための小テストは生徒によって実施日や科目が異なるため、手入力で登録することも多い。
《オブジェクト構成》
生徒(主)ーテスト結果(従)
※テスト結果オブジェクトの名前は自動採番。
要望
・一人の生徒につき、1件ずつテスト結果のレコードを作成するのではなく、ひとつの画面で複数のテスト結果を入力できるようにしたい。
・簡易的な登録で構わないため、次の項目を入力できるようにしたい。
・試験日
・教科
・点数
設定概要
・画面フローで繰り返しコンポーネントを用いて、テスト結果を一度に複数登録できるようにする。
・生徒レコードに画面フローを起動するアクションを配置し、生徒レコード上で操作できるようにする。
フロー設定内容
フローの全体図です。

①画面:得点入力画面
構成を簡単に書くと、↓のような感じです。

※現時点では、繰り返しコンポーネントには項目タブからオブジェクトの項目を追加することができません。
画面>繰り返しコンポーネント

API参照名:「AddScore」組織の命名ルールに則って、わかりやすい名前を付けます。
データソースの設定 >事前入力された項目のコレクション:既存のデータを更新するために画面要素の前にコレクションを取得して使用するような場合に、こちらにコレクションを挿入します。今回は新規作成のみを行うため、空白のままにします。
コンポーネントの表示を設定:コンポーネントの表示に条件はないので「常に」を選択します。
子コンポーネント
次の 3つの項目を入力させるので、3つのコンポーネントを繰り返しコンポーネントの中に追加します。
《項目》
・試験日
・教科
・点数
↓
《コンポーネント》
・日付
・選択肢ルックアップ
・数値
それぞれのポイントに絞って内容をご説明します。
・試験日(日付)
表示ラベル:「試験日」組織の命名ルールに則って、わかりやすい名前を付けます。
API参照名:「ExamDate」組織の命名ルールに則って、わかりやすい名前を付けます。
その他はデフォルトのままです。
・教科(選択肢ルックアップ)
表示ラベル:「教科」組織の命名ルールに則って、わかりやすい名前を付けます。
API参照名:「Subject」組織の命名ルールに則って、わかりやすい名前を付けます。
選択肢を設定 >ユーザーが複数のオプションを選択できるようにする:ひとつの入力行につき、ひとつの教科のテストについて入力するので、「いいえ」を選択します。
選択肢:今回は、もともとテスト結果オブジェクトに用意されている選択リスト「教科」と同じ値になるので、「選択リスト選択肢セット」リソースを作成して挿入します。
選択リスト選択肢セット-----------------------------------
「+新規選択肢リソース」で↓の内容で作成します。

選択肢に作成した選択リスト選択肢セットを設定します。

------------------------------------------------------------
その他はデフォルトのままです。
・点数(数値)
表示ラベル:「点数」組織の命名ルールに則って、わかりやすい名前を付けます。
API参照名:「ScoreScore」組織の命名ルールに則って、わかりやすい名前を付けます。
その他はデフォルトのままです。
画面フロー
画面フローの要素事態に表示ラベルとAPI参照名を設定します。
表示ラベル:「得点入力画面」組織の命名ルールに則って、わかりやすい名前を付けます。
API参照名:「ScreenInputScore」組織の命名ルールに則って、わかりやすい名前を付けます。
「フッターを設定」で、入力後に「登録」をクリックすると次の処理が実行されるようにします。
フッターを表示:✓を入れます。
【次へ】ボタンまたは【完了】ボタン:「カスタム表示ラベルを使用」
【次へ】ボタンまたは【完了】ボタンの表示ラベル:「登録」
②ループ:入力をループ
表示ラベル:
「入力をループ」
組織の命名ルールに則って、わかりやすい名前を付けます。
API参照名:「LoopInput」
組織の命名ルールに則って、わかりやすい名前を付けます。
コレクション変数を選択:「得点入力画面 >AddScore(繰り返しコンポーネント)>すべての項目」
画面フローで取得した繰り返しコンポーネントの入力データを選択します。
コレクションを反復処理するための方向を指定します。>方向:
「最初の項目から最後の項目へ」を選択します。
③割り当て:テスト情報を割り当て

順番が揃ってなくてごめんなさい🙇
表示ラベル:「テスト情報を割り当て」組織の命名ルールに則って、わかりやすい名前を付けます。
API参照名:「AssignScoreValue」組織の命名ルールに則って、わかりやすい名前を付けます。
変数値を設定:入力された値とテスト結果オブジェクトの項目を紐づけるため、値を割り当てる先のレコード単一変数「ScoreRecord」を作成します。
レコード単一変数「ScoreRecord」-----------------------
API参照名:「ScoreRecord」組織の命名ルールに則って、わかりやすい名前を付けます。
データ型:「レコード」
複数の値を許可(コレクション):チェックなし
オブジェクト:「テスト結果」
フロー外部での可用性:2つともチェックなし
------------------------------------------------------------
画面フローで入力された値を割り当てていきます。
・試験日
ScoreRecord>試験日|次の文字列と一致する|ループ 入力をループの現在の項目 >試験日
・教科
ScoreRecord>教科|次の文字列と一致する|ループ 入力をループの現在の項目 >選択された選択肢の値
・点数
ScoreRecord>点数|次の文字列と一致する|ループ 入力をループの現在の項目 >点数
また、作成するレコードを紐づける生徒レコードの情報が必要なので、レコード単一変数「recordId」を作成します。「recordId」のAPI参照名の変数は、画面フローを起動するレコードの値をフローに受け渡す特別な機能を持ち合わせています。今回は生徒レコードの値を受け渡すために使用します。
レコード単一変数「recordId」-----------------------
API参照名:「recordId」必ずこの値にしてください。
データ型:「レコード」
複数の値を許可(コレクション):チェックなし
オブジェクト:「生徒」
フロー外部での可用性:「入力で使用可能」に✓を入れます。
フロー外部(レコード画面)から値を受け渡すため、こちらにチェックが必要です。
------------------------------------------------------------
4行目に↓の位一行を追加して、生徒レコードと新規作成するテスト結果レコードを紐づけます。
・生徒
ScoreRecord>生徒|次の文字列と一致する|recordId >カスタムオブジェクトID
④割り当て:コレクションにテスト情報を割り当て
表示ラベル:「コレクションにテスト情報を割り当て」組織の命名ルールに則って、わかりやすい名前を付けます。
API参照名:「AssignScoreCollection」組織の命名ルールに則って、わかりやすい名前を付けます。
変数値を設定:前の割り当て要素で項目の値を割り当てたテスト結果レコードの単一変数を、今度はコレクション変数に追加し、レコード新規作成用のデータを用意します。割り当て先のコレクション変数を作成します。
コレクション変数「ScoreCollection」-------------------
API参照名:「ScoreCollection」組織の命名ルールに則って、わかりやすい名前を付けます。
データ型:「レコード」
複数の値を許可(コレクション):✓あり
オブジェクト:「テスト結果」
フロー外部での可用性:2つともチェックなし
------------------------------------------------------------
コレクション変数を作成したら、↓のように単一変数を割り当てます。
ScoreCollection|追加|ScoreRecord
⑤レコードを作成:テスト結果レコードを作成
表示ラベル:「テスト結果レコードを作成」組織の命名ルールに則って、わかりやすい名前を付けます。
API参照名:「CreateScoreRecords」組織の命名ルールに則って、わかりやすい名前を付けます。
レコード項目値の設定方法:「レコード変数から」
作成するレコード数:「複数」
値を選択して複数のレコードを作成 >レコードコレクション:「ScoreCollection」前の要素で必要なデータを割り当てたコレクション変数を選択します。
既存のレコードを更新:「無効」今回は新規作成のみのため、無効のままにします。
以上でフローの設定は完了です。
保存して、適宜テストを行い、フローを有効化します。
レコード画面のアクションから起動できるように配置
カスタムアクションの作成
生徒オブジェクでアクション種別をフローにし、作成したフローを設定したカスタムアクションを追加します。

レコード画面に配置
ページレイアウトのカスタマイズ状況によって追加の設定が必要になりますが、基本的にはオブジェクトのページレイアウトへアクションを追加することで、実際のレコード画面で使用できるようになります。

モバイルおよびLightningのアクション のスペシャリストにドロップ
動作を確認
フローを仕込んだアクションをクリックすると……3つの項目を入力する画面が開きます!

・左下の【+追加】をクリックすると、3つの項目のセットが追加されます。
・【削除】をクリックすると、そのセットが削除されます。

【登録】をクリックすると、入力内容を反映したレコードが作成されました。

ポイント
・画面フローの繰り返しコンポーネントでは、項目のセットを複数入力でき、入力内容からレコードの作成が可能である。
・現時点では、項目タブからオブジェクトの項目を繰り返しコンポーネントに追加することはできず、以下のコンポーネントが使用できる。
・チェックボックス
・チェックボックスグループ
・通貨
・日付
・日時
・ロングテキストエリア
・複数選択リスト
・数値
・パスワード
・選択リスト
・ラジオボタン
・テキスト
・表示テキスト
◇ Salesforce ヘルプ >ドキュメント >Salesforce リリースノート >Spring'24リリースノート >新しい繰り返しコンポーネントを使用した項目セットの複数のインスタンスの作成 (ベータ)・一度に画面に追加できる繰り返しコンポーネントは30個。
⇒ユーザーが画面フローを実行時に【+追加】をクリックして入力項目のまとまりを追加できるのは30個まで。
◇ Salesforce ヘルプ >ドキュメント >ビジネスプロセスの自動化 >フロー画面表示コンポーネント:繰り返しひとこと
使いどころがわからないまま放置していましたが、いま実験的に取り組んでいる、カスタムの承認プロセスもどきにも使えるかもしない?と可能性を感じ始めています(一括承認的なことできるかも⁉)。
とは言え、画面をずっとスクロールし続けなければいけないような大量のレコードの処理となると、やはりインポートウィザードやデータローダが確実かと思います。扱うデータのボリュームやプロセスのどの位置にいるかによって、使い分けてみてもいいと思います。
関連記事
Winter'25 フローの選択肢ルックアップコンポーネントで複数の値を検索して保存【フロー】複数ルックアップコンポーネントを使って商談一括作成画面を作ってみたループとコレクション変数を用いたフローの作成同じパターンのレコード作成を自動化Summer'24 画面フローのAction Buttonコンポーネントでフローを呼び出す(ベータ)公開:2024年11月22日
更新①:2024年11月25日