Salesforce AppExchange で近日公開

Salesforce で時間枠を選べるカレンダーを作る

Salesforce にあるのは日付選択と時間項目だけで、選択できる時間枠のグリッドはありません。本格的な Salesforce の時間枠選択に何が必要か、そして自作せずに手に入れる方法を解説します。

公開日 2026 年 6 月 27 日 · 更新日 2026 年 10 月 21 日 · MultiDatePick

時間枠選択は決まった形の画面です。日付を選ぶカレンダーがあり、その下にその日を予約可能な間隔に区切ったグリッドが表示され、埋まっている枠は一目で予約不可とわかります。ネット上の予約サイトはどこもこの形なので、誰でも見覚えがあるはずです。しかし Salesforce には標準で用意されていません。

Salesforce のリソース予約デモ: アドバイザーを選び、顧客を入力し、日付と空いている 30 分の時間枠を選んで、申請を保存
アドバイザー、日付、空いている時間枠を選ぶだけ。埋まっている枠は最初から表示されません。
Salesforce の MultiDatePick DateTime コンポーネントのアニメーションデモ: 新入社員オンボーディングの予定に名前を付け、月曜から木曜までをドラッグし、共通のタイムグリッドで 09:00〜12:00 をドラッグして、1 日 1 シフトずつ保存
4 日間をドラッグし、09:00〜12:00 をドラッグして、1 日 1 件ずつレコードを保存。

Salesforce に標準で用意されているもの

標準の日付/時間項目は、日付入力と時刻のドロップダウンとして表示されます。これはただのフォーム部品で、ほかに何が予約されているかを知りません。項目は他のレコードの存在を知らないので、ユーザーがすでに埋まっている枠を選んでも止められません。チェックが行われるのは、ユーザーが選択を確定した後の入力規則やフローの中です。

ここに足りない部分があります。時間枠選択はユーザーが選ぶ前に既存のレコードを検索し、空いている枠だけを提示します。

本格的な時間枠選択に必要なこと

要件標準項目MultiDatePick なら
1 日を間隔で区切る間隔という概念がない任意の間隔 (15、30、60 分が一般的)
営業時間を把握するどの時刻でも有効最も早い時刻と最も遅い時刻、またはリソースごとの営業時間
埋まっている枠を表示する何も表示されない既存の予約をグリッド上に表示
1 つの枠に複数人表現できない定員を設定し、予約数/定員のバッジをリアルタイム表示
日付ごとに異なる時刻1 項目に 1 つの値Allow Different Times Per Date
保存時に重複を防ぐ独自のロジックが必要競合の動作: block、skip、allow

自作が見た目以上に大変な理由

画面の描画は簡単な部分です。見積もりから漏れがちなのは次の部分です。

予約の検索

誰かが 2 か月表示を開いてもガバナ制限を超えないよう、効率よく検索する必要があります。

重複の計算

予約の長さがまちまちになった途端に面倒になります。

タイムゾーン

実行ユーザーのタイムゾーンとレコードのタイムゾーンが同じとは限りません。

競合状態

2 人が同じ瞬間に同じ空き枠を見ている場合です。

項目レベルセキュリティ

コンポーネントは、実行ユーザーが参照できる範囲を守る必要があります。

アクセシビリティ

クリックできる div を並べたグリッドは、そのままではキーボードで操作できません。

最も手間がかかるのはアクセシビリティです。時間枠のグリッドには、正しい ARIA グリッドのセマンティクス、矢印キーでの移動、色以外でも伝わる状態表示が必要です。社内開発で最も省かれがちで、調達審査で必ず聞かれる部分です。

ひと目で探せるように時間枠をグループ化する

9 時から 17 時までを 15 分間隔で区切ると 32 枠になります。単純なリストで並べると、壁のように見えてしまいます。午前、午後、夕方の時間帯ごとにまとめれば、3 つの短いブロックになります。特に、スマートフォンで予約する顧客にとって効果的です。

Salesforce カレンダーの時間枠選択グリッド: 空き枠と予約済みの枠を時間帯ごとにグループ化して表示
埋まっている枠を示した時間枠グリッド。グループ化しているので一覧でも探しやすい。

カレンダーそのものが不要な場合

日付がすでに決まっている場合もあります。日付が入っている予定のレコードページでは、月間カレンダーは不要です。Time Grid Only(タイムグリッドのみ) を使うとカレンダーを表示せず、その日付の時間枠グリッドだけを表示します。日付はホストレコードの項目から読み取るか、直接指定できます。

時間枠選択を形づくる設定

どれもセットアップウィザードの項目です。コードは一切不要です。

設定機能API 参照名
時間間隔(Time Slot Interval (Minutes))各時間枠の長さ。任意の分数を指定できます。timeInterval
最小時刻 / 最大時刻(Earliest Time / Latest Time)Dates & Times コンポーネントでグリッドが表示する時間帯。minTime、maxTime
営業時間開始項目 / 営業時間終了項目(Business Hours Start / End Field)Booking コンポーネントでのリソースごとの営業時間。businessHoursStartField
定員項目(Capacity Field)1 つの時間枠でリソースが受け付ける予約の数。capacityField
時間枠を時間帯でグループ化(Group Time Slots by Period)午前、午後、夕方のセクションに分けて表示。groupTimeSlotsByPeriod
競合の動作(Conflict Behavior)保存時の重複をブロック、スキップ、または許可。conflictBehavior
タイムグリッドのみ(Time Grid Only)決まった 1 日の時間枠グリッドだけを表示。timeGridOnly
設定するだけの時間枠選択。Dates & Times コンポーネントとResource Booking コンポーネントのどちらにも搭載されています。レコードページ、アプリケーションページ、Experience Cloud サイト、画面フローの中で動作します。

よくある質問

時間枠選択カレンダーとは?

日付を選ぶカレンダーの下に、その日を予約可能な間隔に区切ったグリッドが表示されるものです。すでに埋まっている時間枠は予約不可として表示されるため、空いている時間だけを選べます。

Salesforce に時間枠選択の機能はありますか?

自社のオブジェクト向けにはありません。標準の日付/時間項目は日付入力と時刻のドロップダウンで、他のレコードを参照できません。MultiDatePick は、カレンダーの読み込み時に既存の予約を読み取り、空いている時間だけを提示する時間枠選択を追加します。

時間枠の長さは自由に決められますか?

はい。時間枠の間隔は任意の分数で設定できます。15 分、30 分、60 分が一般的ですが、45 分の面接枠も同じように設定できます。

時間枠選択を追加するのに Apex や開発者は必要ですか?

いいえ。セットアップウィザードが設定を作成し、Config Name を指定するだけで、コンポーネントをレコードページ、アプリケーションページ、Experience Cloud サイト、画面フローに配置できます。書くべきコードはありません。

Salesforce の時間枠選択を、設定するだけで

ライブデモで空いている時間枠を選んでから、「はじめに」の手順で自分の組織に追加しましょう。

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