DX攻略部がリニューアルしました!

【Salesforce】画面フローの入力変数input_recordとは?使い方を実例を使いながら解説!

こんにちは、DX攻略部のヘナトンです。

「商談レコード詳細ページに画面フローを配置して、その商談の情報を使ってフロー処理をしたい!」

「取引先のカスタムボタンをクリックしてフローを起動する際に、その取引先の情報を使ってフロー処理をしたい!」

これらのような経験はありませんか?

Salesforceの画面フローにおいて、起動元のレコード情報をフロー内で利用するために欠かせないのが入力変数の設計です。

なかでも、特定のレコード情報を一括で保持するinput_recordの活用は、業務の自動化を効率的に進めるための重要な手法となります。

今回はそんな時に便利な入力変数input_recordについて事例を用いて解説します。 

そもそも画面フローとは?という方はこちらの記事をご活用ください。

関連記事

こんにちは、DX攻略部のヘナトンです。 Salesforceは、顧客関係管理(CRM)ソフトウェアのリーディング企業であり、世界中の多くの企業がそのサービスを利用しています。 Salesforceは、ビジネスプロセスを改善し、ビ[…]

また同様にレコードのIdだけを入力変数として取得できるrecordIdについてはこちらで解説しております。

関連記事

こんにちは、DX攻略部のヘナトンです。 Salesforceで画面フローを使った業務自動化を進めていると、必ずと言っていいほど「このレコードの情報をフロー内で使いたい」という場面にぶつかります。 「商談レコードのページに配置したフローで[…]

DX攻略部では、『Salesforce支援サービス』というサービスも提供しておりますので、こちらについて興味を持った方は、ぜひご相談ください。

Salesforce支援サービス

【事例】画面フローを使って取引先にある商談項目を一括更新する方法

今回の事例では取引先レコード詳細ページに配置された画面フローを使ってその取引先の子レコードである商談の説明項目を取引先の説明項目と同じ値に更新する処理を行います。

※標準オブジェクトの取引先と商談はリレーション構造上、「取引先:商談 = 1:多」になっているので少し複雑なループ処理を行います。

まずは目標である完成形を確認しましょう。

目標確認

AAA株式会社の商談「AAA–2023年6月度」の説明項目を確認します。(空白)

AAA株式会社の詳細ページに配置された画面フローの「次へ」をクリックして起動します。

画面フローが起動され、取引先の説明とその商談の説明が同じになりました。

設定方法

設定>クイック検索「フロー」>フロー>新規フロー

まず新規フローを立ち上げます。

フロー種別を選択するモーダルウィンドウが表示されたら「画面フロー」を選択し、「作成」ボタンをクリックします。

今回はレイアウトを自由形式で作成するので「自動レイアウト」から「自由形式」に切り替えます。

※レイアウトの違いは設定する際のヴィジュアルだけですのでお好きな方を設定ください。

画面

取引先レコード詳細ページに配置した際に始めに表示される画面を設定します。

ツールボックス>要素>相互関係>画面をキャンパスにドラッグ&ドロップで開きます。

新規画面が開けたら、画面のプロパティを設定します。

画面要素の表示ラベルとAPI参照名を入力します。

「ヘッダーを設定」でヘッダーの表示/非表示(デフォルトは表示)を設定し、ヘルプテキストを設定できます。

「フッターを設定」でフッターのボタンの詳細設定が可能です。

コンポーネント>表示>表示テキストをキャンパスにドラッグ&ドロップで配置します。

表示テキストのAPI参照名を入力します。

表示テキストの内容を入力します。(今回は「商談の説明項目を一括更新しますか?​」と入力します)

モーダル画面の「完了」をクリックします。

入力変数input_recordの作成

入力変数recordIdではレコードを取得要素を使用しなければレコードが取得できませんでしたが、入力変数input_recordでは必要ありません

画面フローが起動されたレコードページのレコードを丸ごと変数として取得できるのです。

ツールボックス>マネージャ>新規リソースをクリックします。

  • リソース種別:変数を選択します。
  • API参照名:「input_record」と入力します。一字違わず「input_record」と入力してください。「input_record」と入力しないと機能しません。「input_Record」でも「Input_Record」でもなく「input_record」です。
  • データ型:レコードを選択します。
  • オブジェクト:取引先を選択します。
  • フロー外部での可用性:「入力で使用可能」にチェックを入れてください。
  • 完了をクリックします。

      この入力変数を作成するだけで、Salesforce Idだけでなくレコード丸ごと取得できました。便利ですね。

      レコードを取得

      更新する子オブジェクトの商談を取得します。

      ツールボックス>要素>データ>レコードを取得をキャンパスにドラッグ&ドロップで開きます。

      新規レコードの取得が開けたら、要素のプロパティを設定します。

      レコードを取得要素の表示ラベルとAPI参照名を入力します。

      このオブジェクトのレコードを取得>オブジェクトで商談を選択します。

      取引先レコードを絞り込み>項目で「AccountId」を選択します。

      演算子で「次の文字列と一致する」を選択します。

      値のボックス内をクリックし、先ほど作成した入力変数「input_record」>取引先IDを設定します。

        「保存するレコード数」は「すべてのレコード」を選択することでこのgetOppsは複数の商談レコードを保持するコレクション変数(Apexで表現するとList<Opportunity>)になります

        「商談レコードを並び替え」と「レコードデータの保存方法」はデフォルトのまま「完了」をクリックします。

        ループ

        商談レコードのコレクション変数の項目を一つ一つ更新するにはループ要素を使用します。

        今回はさきほど作成したgetOppsという商談レコードのコレクション変数の数だけループします。

        ここで注意してほしいのはSalesforceフローのループではコレクション変数を用いた拡張for文的なループしか行うことができません

        Salesforceフローでコレクション変数に関わらず指定した条件でループしたい場合の対応策については別の記事で紹介したいと思います。

        ループ要素の表示ラベルとAPI参照名を入力します。

        コレクション変数を選択>コレクション変数でgetOppsを選択します。

        処理するための方向とはコレクション変数の一つ一つをループする順番のことですが今回は考慮不要です。

        完了をクリックします。

        割り当て

        入力変数input_recordで取得した取引先レコードの項目値をループ内の一つ一つの商談項目に割り当てます。

        ツールボックス>要素>ロジック>割り当てをキャンパスにドラッグ&ドロップで開きます。

        要素のプロパティを設定します。

        割り当て要素の表示ラベルとAPI参照名を入力します。

        新しく商談レコード変数oppを作成し、その商談ID項目を左側に設定します。

        ループしている商談のID項目を右側に設定します。

        oppの説明項目を左側に設定します。

        入力変数input_record(取引先)の説明項目値を右に設定します。

        新しく商談レコードコレクション変数opps_forUpdateを作成し、左側に設定します。

        演算子を「追加」に変更します。

        1行目と2行目で項目を設定したoppを右側に設定します。

        「完了」をクリックします。

        レコードを更新

        割り当てた内容を更新する設定をします。

        ツールボックス>要素>データ>レコードを更新をキャンパスにドラッグ&ドロップで開きます。

        要素のプロパティを設定します。

        レコードを更新要素の表示ラベルとAPI参照名を入力します。

        更新するレコードを選択>レコードまたはレコードコレクションに、商談レコードコレクション変数opps_forUpdateを設定します。

        「完了」をクリックします。

        要素を連結する

        作成した要素同士をつなぎます。

        矢印でつなぐことで実行順序を設定できます。

        ループ要素で設定したコレクション変数の数だけループは実行されます。

        例えば、画面フローを起動した取引先に紐づいた商談のレコード数が3つだった場合の今回の画面フローの実行順序は、

        screen1→商談取得→Loop1→項目割り当て→Loop1→項目割り当て→Loop1→項目割り当て→Loop1→商談更新

        となります。

        つまり、ループ要素Loop1から商談のレコード数である3回は「項目ごと」という矢印が実行され、その3回が終了した後は「最後の項目の後」という矢印が実行されます。

        最後に保存および有効化し、取引先Lightningレコードページに配置すれば完了です。

        関連記事

        こんにちは、DX攻略部のラムネです。 ついにData360(旧:Data Cloud)がSnowflakeのサポートを開始しました!! 正直こちら個人的にとても嬉しいニュースでして、Data360(旧:Data Cloud)(D[…]

        2026年現在の最新仕様と設計上の留意点

        技術の進展に伴い、従来のinput_record活用に加えて考慮すべき現代的なポイントを整理します。

        リアクティブコンポーネントの標準活用

        2026年現在の画面フローでは、リアクティブ機能が標準化されています。

        例えば、input_recordから取得した取引先の属性に応じて、画面上の商談入力項目を動的に表示・非表示にしたり、AIが推奨する完了予定日をその場で提示したりすることが可能です。

        画面遷移を挟まずに情報の相互作用を実現できる点が、以前の仕様との大きな違いです。

        input_recordとrecordIdの使い分け

        かつてはテキスト変数のrecordIdでIDのみを受け取り、改めてレコード取得を行う手法も一般的でした。

        しかし現代では、フロー起動時の負荷軽減とクエリ発行回数の抑制を目的として、input_record(レコード変数)によるデータの一括保持がより強く推奨されています

        関連記事

        こんにちは、DX攻略部のヘナトンです。 Salesforceにはプロファイルやロール、取引先チーム、商談チーム、ケースチーム、グループ、キューなどユーザをまとめる機能がいくつか存在します。 今回はその中でもケースチームに焦点を当[…]

        Apexコードによる実装との比較検討

        ここまで説明したことを、プログラム(Apex)で記述した場合について紹介します。

        Apexで書くとこうなる(プログラマー向け)

        最後にプログラマーの方がフローをイメージしやすいようにレコードを取得からレコードを更新までの要素の処理内容をApexコードで表現します。

        List<Opportunity> getOpps = [SELECT 全ての項目 FROM Opportunity WHERE AccountId =: input_record.id];
        List<Opportunity> opps_forUpdate = new List<Opportunity>();
        for(Opportunity loop1 : getOpps){
          Opportunity opp = new Opportunity();
          opp.Id = loop1.Id;
          opp.Description = input_record.description;
          opps_forUpdate.add(opp);
        }
        update opps_forUpdate;

        参考までにどうぞ。

        Apexで書いたほうが圧倒的に楽ではないかと思いたくなるところですが、Apexで書いた場合はレコード詳細ページに配置するためにVisualforceを書かなくてはなりませんし、本番環境にアップロードするためにTestコードも書かなくてはいけないことも考慮してどちらで開発するか決めましょう。

        事例まとめ

        記事で紹介した事例についての補足説明をします。

        活用事例のポイント

        このinput_record活用事例では取引先に配置された画面フローを起動し、その子オブジェクトの商談の項目を更新しました。

        過程の処理としてループ要素の使い方も簡単に紹介いたしましたが、今回のポイントとしてはrecordIdではなくinput_recordを使うことで、レコードを丸ごと取得し、レコードを取得要素を一つ省略できることです。

        2026年においては、画面そのものの操作性を高める設計も容易になっており、管理者にはロジックの正確さに加え、ユーザーの使い勝手を考慮したインターフェース設計が求められています。

        関連記事

        こんにちは、DX攻略部のヘナトンです。 Salesforceのカスタム項目で画像を表示したいと思ったことはありませんか? 一目でステータス等の状況を判断できるようにしたいと思ったことはありませんか? 今回はそんな要望を叶え[…]

        まとめ 

        画面フローの入力変数input_recordについての解説は以上です。

        画面フローでは入力変数input_recordを用いることでrecordIdを使用する際と比べてレコードを取得要素を一つ省略できました!

        (SOQL的なサーバーとのやりとりが一つ減ることにテンションが上がるのは私だけではないはず!)

        もちろん処理内容によっては入力変数としてrecordIdを使用すべきシーンは多々あります。

        処理内容によってrecordIdとinput_recordの二つの特別な入力変数を使い分けることで最適なフロー開発を目指しましょう。

        2026年、Salesforceの自動化機能はAIによる支援を含め進化を続けていますが、変数の受け渡しやバルク処理といった基本原則は変わりません。

        むしろ、プラットフォームが高度化するほど、こうした基礎知識に基づいた堅牢な設計がシステムの保守性を左右すると感じています

        DX攻略部のSalesforce支援サービスでは、初期導入から開発・カスタマイズ、運用、教育まで一気通貫で対応しています。

        フロービルダーを含むノーコード開発はもちろん、Apex言語やAPIを活用したプログラム開発も対応可能です。

        「まずは相談だけ」でも歓迎していますので、Salesforceの活用に課題を感じている方はぜひ詳細をご確認ください

        DX攻略部へのお問い合わせはこちら