Salesforce AppExchange で近日公開

Salesforce 画面フロー (Screen Flow) でユーザーに複数の日付を選ばせる方法

フローの日付項目は、1 つの画面要素につき 1 つだけです。9 日分を選んでもらう必要があるなら、それが壁になります。選択肢とそれぞれのトレードオフを整理しました。

公開日 2026 年 5 月 1 日 · 更新日 2026 年 10 月 21 日 · MultiDatePick

管理者なら誰もが一度はぶつかる問題です。休暇申請、勤務可能日の回答フォーム、研修の申し込み。ユーザーは連続しているとは限らない複数の日付を選ぶ必要があるのに、フロー標準の日付コンポーネントで受け取れるのはちょうど 1 つだけです。

よくある回避策と、その問題点

方法やり方代償
1 つの画面に日付項目を複数並べる日付 1、日付 2、日付 3、日付 4...上限が固定で見た目も悪く、ほとんどが空欄
1 つずつ尋ねるループ「別の日付を追加しますか?」と聞いて画面に戻る3 日を超えるとかなりの苦痛
自由入力のテキスト項目ユーザーが日付を文字で入力する解析できず、レポートにも使えず、ミスも多い
開始日と終了日だけ1 つの連続した期間として扱う日付が連続していなければ必ず間違う
日付の複数選択リスト日付の値をあらかじめ作っておくすぐに古くなり、常にメンテナンスが必要
複数日付のカレンダーコンポーネント必要な日付を 1 つの画面ですべてクリックコレクションを返すので、そのままループできる

開始日と終了日の回避策は最もよく使われ、そして最も気付かれにくい間違いを生みます。「3 日、4 日、11 日、18 日に休みたい」が「3 日から 18 日まで」になり、16 日間不在という扱いになってしまいます。データは一見きれいでも、単に間違っています。

本当の解決策: コレクションを返す画面コンポーネント

フローに本当に必要なのは、ユーザーが好きなだけ日付をクリックでき、それをコレクションとして返してくれる画面コンポーネントです。これさえあれば、残りはごく普通のフローです。コレクションをループして、日付ごとにレコードを作成すれば完了です。

Salesforce 画面フロー (Screen Flow) による休暇申請のアニメーションデモ: ユーザーが MultiDatePick カレンダーで 3 日をクリックして送信すると、次のフロー画面に受け取った 3 つの日付が一覧表示される
休暇申請フロー: 3 日をクリックして送信すると、次の画面にはもう 3 日分がコレクションとして届いています。

MultiDatePick は、受け取りたい内容に応じて複数の出力を返します:

出力内容API 参照名
Selected DatesISO 形式の日付のテキストコレクション。そのままループ可能selectedDates
Date Ranges JSON連続する日を 1 件のレコードにまとめたい場合の、統合された期間selectedDateRangesJson
Dates With Times JSON日付ごとの開始時刻と終了時刻selectedDatesWithTimesJson
Successful Bookings Count、Conflict Dates保存できたものと、競合したものbookingSuccessCount

JSON をレコードに戻す

出力のうち 2 つが JSON なのは、フローに「複数の項目を持つオブジェクトのリスト」を表すネイティブな型がないためです。数式でテキストを解析する必要はありません。パッケージには Parse Date Entries from JSON というフローアクションが付属しており、JSON を受け取って From Date、To Date、Start Time、End Time を持つ正式なコレクションを返します。あとは他のコレクションと同じようにループするだけです。

複数日付のカレンダーコンポーネントで、ユーザーが一度にいくつもの日付を選択している Salesforce 画面フロー
画面フローの中の複数日付カレンダー。フローの後続処理でループできるコレクションを返します。

1 時間を無駄にしがちな落とし穴

チェックボックスではなく Config Name を設定してください。 このコンポーネントにはオン/オフのプロパティが数多くあり、Flow Builder では空欄のままのチェックボックス入力は false ではなく「空」になります。これらはすべて省略できます。セットアップウィザードでカレンダーを作成し、その設定の名前を Config Name プロパティに入れるだけです。すると、オン/オフの設定はすべて設定から読み込まれ、フロー専用のいくつかの項目 (Required、Show Inline、Output Date Ranges as JSON) は自分でオンにしない限りオフのままです。Config Name を使わずにすべて手作業で設定する場合に限り、必要なチェックボックスに $GlobalConstant.True または $GlobalConstant.False を指定する必要があります。
Salesforce Flow Builder のアニメーションデモ: 画面を開いて MultiDatePick を検索し、Resource Booking コンポーネントを画面にドラッグ。Config Name に保存済みのセットアップウィザード設定を指定し、[完了] と [保存] をクリック
コンポーネントを画面にドラッグし、Config Name(設定名) を設定して保存。チェックボックスの設定は不要です。

レコードの保存もコンポーネントに任せたい場合は、親レコードの Id を Parent Record Id に渡してください。日付ごとに子レコードを 1 件ずつ作成します。空欄のままにすれば、出力をループして自分の方法でレコードを作成できます。

作る前にレコードの形を決める

同じ 9 つの選択日でも、9 件のレコードにも、連続する日を期間にまとめて 4 件のレコードにも、サブブロックを持つ 1 件の親レコードにもできます。どれが正しいかは、必要なレポートによって変わります。フローを作る前に決めておきましょう。後から変えると、フローの修正だけでなくデータの移行も必要になるからです。

次のフローには本物の複数日付ピッカーを

ライブデモで日付をクリックしてみてから、「はじめに」の手順に沿ってフロー画面にコンポーネントを追加してください。

  • $20/ユーザー/月ですべての機能
  • 30 日間無料、カード不要
  • 100% Salesforce ネイティブ
  • Apex 不要
  • Salesforce AppExchange で近日公開