Salesforce AppExchange で近日公開

Salesforce でダブルブッキングを防ぐ

入力規則はほかのレコードを参照できません。この 1 つの制約のせいで、多くの Salesforce 予約システムは競合に 1 日遅れで気づくことになります。

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

ダブルブッキングはタイミングの問題です。標準の Salesforce の仕組みが「その会議室は埋まっています」と伝えられる頃には、ユーザーはもう会議室を選び、フォームの残りを入力して、次の作業に移っています。

定番のツールがうまくいかない理由

ツールできること足りない点
入力規則保存するレコードの項目をチェックほかのレコードをまったく検索できない
重複ルール項目の値の一致で判定9:00〜10:00 と 9:30〜10:30 は重なっているのに一致しない
レコードトリガーフロー保存時に検索してブロックユーザーが確定したあとに動く。素直に作ると一括処理で破綻する
カスタムコード完全に制御でき、重なりのロジックも正確結局は保存時に拒否するうえ、コードの保守も自社で負う

どれも同じ形をしています。選んだあとでユーザーを拒否するのです。正しく作ったカスタムの仕組みでも、出てくるのは「その枠は埋まっています。もう一度お試しください」。最初からその枠を提示しないほうが、ずっと良い体験です。

重なりは一致ではない

重複ルールに頼りたくなる人が多いので、ルールを示しておきます。2 つの予約が競合するのは、一方がもう一方の終了前に始まり、もう一方の開始後に終わるときです。9:00〜10:00 の予約と 9:30〜10:30 の予約は 30 分重なっていますが、同じ値の項目は 1 つもありません。値の一致に基づく方法では、毎回見逃します。

競合と定員は別の問題

この 2 つはよく混同されます。

競合

1 つしか受け入れられないリソースを 2 つが奪い合う状態。会議室、面接官、車両など。

定員

複数を受け入れられるリソース。問題は残りがいくつかです。20 席のクラス、看護師 4 人が必要なシフト、60 席のフリーアドレスエリアなど。

定員のあるリソースを競合のリソースとして扱うと、2 人目を予約できなくなります。競合のリソースを定員 1 として扱うのは一応動きますが、レポートに使いたいはずの件数が失われます。

MultiDatePick の Salesforce 稼働率ヒートマップのアニメーションデモ: 縦にアドバイザー、日ごとに予約数/定員を表示。満員の日にカーソルを合わせ、クリックするとそのアドバイザーの週を表示
チーム全体の定員: 日ごとに予約数/定員を表示し、予約過多の日はオレンジの枠で表示。

妥当な 3 つの動作

「ブロックする」が常に正しいとは限りません。12 日を選んだうち 2 日が重なっているだけで送信全体を拒否するのは、ユーザーに不親切です。使えるシステムは選択肢を用意しています。

Block

保存を拒否し、競合を報告。すべての日付が重要な場合に適しています。

Skip

空いている 10 日を保存し、空いていなかった 2 日を報告。まとめて選ぶ場合は、たいていこれが親切な既定値です。

Allow

重複を意図的に許可。あえて予約を多めに受ける業種もあります。

各時間枠に定員バッジを表示し、競合検出でダブルブッキングを防ぐ Salesforce 予約カレンダー
各時間枠に定員をリアルタイムで表示するので、クリックする前に競合がわかります。

本当の解決策はもっと手前に

上の仕組みはどれも保存時に動きます。解決策は、チェックを選択の時点に移すことです。カレンダーを読み込むときに既存の予約を検索し、グリッドに表示して、埋まった枠は最初から提示しない。保存時のチェックは、2 人が同じ空き枠を同時に見ている本当の競合状態に備えた安全網として残しますが、主な防御ではなくなります。

MultiDatePick の仕組み。 カレンダーの表示時に既存のレコードを読み込み、埋まった枠は埋まっていると表示し、予約数/定員のバッジで定員をリアルタイムに数え、保存時にも競合を再チェックします。Conflict Behavior(競合の動作) で block、skip、allow を設定します。画面フロー (Screen Flow) では、Conflict Dates と Successful Bookings Count の出力で、次の画面に何が起きたかを正確に伝えます。

選ぶ瞬間にダブルブッキングを防ぐ

ライブデモで枠を予約して、埋まった時間がグリッドから消えるのを確かめてください。

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