普段、学生や外部の方とのミーティングの日程調整にはGoogle Calendarの予約スケジュールを利用していました。ただ、無料版だとGoogleアカウント内の複数のカレンダーを考慮して空き時間を提示することができませんでした。そのため、予約を受け付ける際には、一つのカレンダーだけではなく、複数のカレンダーを横断して空き時間を判定したいという課題がありました。
そこで、Cal.comを予約受付の窓口として導入しました。普段の予定管理とリマインドはこれまで通りGoogle Calendarで行い、Cal.comには複数カレンダーの競合チェックと予約受付を担当してもらってます。
この記事は、自分が実際に作った「対面ミーティング(学生)」の予約ページを例に、同じような仕組みを構築するための備忘録です。
なお、画面名や無料プランの内容は2026年9月時点のものです。Cal.comの更新によって表示や利用条件が変わる可能性があるため、実際に設定する際は公式サイトも確認してください。
- Google Calendarの予約機能で困っていたこと
- Cal.comとは
- 今回構築した予約システムの全体像
- Cal.comのアカウントを作成する
- Google Calendarを接続する
- 複数カレンダーを「スケジュールの重なりをチェック」に設定する
- 予約を書き込むカレンダーを指定する
- 「対面ミーティング」の予約リンクを作成する
- 会議予約時間を15分・30分・60分の予約時間を設定する
- 開催場所を主催者側で固定する
- 「利用可能期間」で予約を受け付ける時間帯を設定する
- 「制限とバッファ」で予約条件を調整する
- 予約フォームで相談内容を事前に確認する
- キャンセルと日程変更を設定する
- ワークフローを使わなかった理由
- 実際の予約ページからテストする
- まとめ
- 参考情報
Google Calendarの予約機能で困っていたこと
あるカレンダーには予定がなくても、別のカレンダーには授業や会議が入っていることがあります。仕事とプライベートを別に設定してる感じです。その場合、仕事が空いていても、プライベートに予定があれば、実際にはその時間に面談の対応はできません。
必要だったのは、指定したすべてのカレンダーを確認し、どこにも予定が入っていない時間だけを予約候補として提示する仕組みでした。Googleカレンダーの予約スケジュール(無料)だと1つのカレンダーしか考慮できないので、少し困っていました。
Cal.comとは
Cal.comは、予約用のWebページを作成できるスケジューリングサービスです。予約の種類、所要時間、開催場所、予約可能時間などを設定し、発行されたリンクを相手に共有できます。
今回の目的で特に重要なのは、接続した複数カレンダーを空き時間の判定に利用できる点です。Cal.comの個人向け無料プランは、記事執筆時点では複数のカレンダー接続や複数の所要時間に対応しています。ただし、この記事では料金プランの比較には踏み込まず、無料プランで実際に設定した範囲だけを扱います。
今回構築した予約システムの全体像
今回の構成は次の通りです。
Google Calendar
├─ カレンダーA ─┐
└─ カレンダーB ─┴→ Cal.comが競合をチェック
↓
空いている時間だけを表示
↓
Webから予約
↓
Google Calendarの指定カレンダーへ予約を登録
ここで大切なのは、Cal.comを予定管理ツールとして使うのではなく、Google Calendarを参照して予約を受け付けるフロントエンドとして使うことです。
Cal.comのアカウントを作成する
まず、Cal.comで無料アカウントを作成します。初期設定では、氏名、ユーザー名、タイムゾーン、通常の予約可能時間などを登録します。
今回は日本で対面ミーティングを受け付けるため、「設定」-「一般」で言語が「日本語」、タイムゾーンが「Asia/Tokyo」になっていることを確認します。特にタイムゾーンがずれていると、予約ページに表示される時刻やGoogle Calendarへ登録される時刻が意図と異なる可能性があるので注意です。
Google Calendarを接続する
Cal.comの「設定」-「カレンダー」を開き、Google Calendarを接続します。Googleの認証画面が表示されたら、予定管理に利用しているGoogleアカウントを選び、必要な連携を許可します。
接続後は、そのGoogleアカウント内の複数のカレンダーをCal.com側で選択できるようになります。個人用、研究室用、授業用など、カレンダーを用途別に分けている場合でも、一つずつ競合チェックの対象を指定できます。
複数カレンダーを「スケジュールの重なりをチェック」に設定する
「スケジュールの重なりをチェック」では、予約可能かどうかを判断するために参照するカレンダーを選びます。ここで、予約と重なっては困る予定が入るカレンダーをすべてONにします。
例えば、カレンダーAに予定がなくても、カレンダーBに予定が入っていれば、その時間は予約ページに表示されません。複数のカレンダーのうち、どれか一つにでも競合する予定があれば予約不可になるため、「実際には予定があるのに予約を受け付けてしまう」という二重予約を防げます。
Google Calendar側の予定が「予定あり」ではなく「予定なし」として登録されている場合は、競合として扱われないことがあります。空き時間が想定と異なる場合は、Cal.comで対象カレンダーがONになっているかに加えて、Google Calendar側の予定の公開方法も確認します。
予約を書き込むカレンダーを指定する
「カレンダーに追加」で、Cal.comから入った予約を実際に追加するGoogleカレンダーを一つ選びます。
「スケジュールの重なりをチェック」と「カレンダーに追加」は役割が異なります。
- スケジュールの重なりをチェック:空き時間の判定に使うカレンダー。複数指定する
- カレンダーに追加:確定した予約を書き込むカレンダー。一つ指定する
今回の構成では、複数のGoogleカレンダーを横断して競合を確認し、予約が成立した場合だけ、予約管理用として決めた一つのGoogleカレンダーへ予定を追加します。参照先と書き込み先を分けて考えると、設定の意味が分かりやすくなります。
「対面ミーティング」の予約リンクを作成する
Cal.comの「リンク」から新しい予約リンクを作成し、名称を「対面ミーティング」としました。Cal.comでは、このような予約内容のひな形をイベントタイプとして設定します。
予約ページのURLには任意のslugを設定できます。相手に共有するURLになるため、内容が分かりやすく、後から用途を見分けやすい名称にしておくとよいでしょう。
会議予約時間を15分・30分・60分の予約時間を設定する
「対面ミーティング」では、予約者が所要時間を15分、30分、60分から選べるようにしました。会議予約時間に入力することで設定できます。
短い確認であれば15分、通常の相談であれば30分、まとまった打ち合わせであれば60分というように、予約者が目的に応じて選べます。複数の所要時間を用意する場合は、予約ページをプレビューし、選択肢が意図した順序で表示されることも確認しておきます。
開催場所を主催者側で固定する
今回は対面で実施するため、開催場所を「自身の研究室」に固定するようにします。
場所を固定するには「所在地」を「対面(主催者のアドレス)」で設定できます。
ちなみに「対面(出席者のアドレス)」を選ぶと、予約者側のフォームに場所を入力する欄が表示されました。この設定は、主催者が予約者の指定場所へ出向く場合に使うものです。
「利用可能期間」で予約を受け付ける時間帯を設定する
「利用可能期間」では、予約受付の基本となる曜日と時間帯を設定します。今回は次のようにしました。
- 月曜日から金曜日:10:00〜19:00
- 土曜日・日曜日:予約不可
- タイムゾーン:
Asia/Tokyo
「利用可能期間」に設定した時間が、そのまますべて予約可能になるわけではありません。実際の予約可能時間は、おおむね次の条件をすべて満たす範囲です。
- 「利用可能期間」で設定した曜日と時間帯の中である
- 「スケジュールの重なりをチェック」で選んだどのGoogleカレンダーにも競合する予定がない
- 後述する事前通知時間、前後の余白、予約受付期間などの条件を満たす
つまり、「利用可能時間」が予約受付の外枠を決め、Google Calendarの予定や各種制限が、その中から予約できない時間を除外します。
また、ここの「スケジュールの重なりをチェック」を「アカウント」から「リンク」にすることで、予約リンクごとに個別のカレンダーを空き時間として考慮する事ができるようになります。
「制限とバッファ」で予約条件を調整する
「制限とバッファ」では、連続した予約や直前予約を避けるための条件を設定できます。今回確認した主な項目は次の四つです。
イベント前 / イベント後:予約の前後に確保する準備・移動・記録などの時間- 最低頻度の通知:予約開始の何時間前まで受け付けるか
- 時間帯間隔:予約の開始時刻を何分刻みで表示するか
- 今後の予約期間の設定:何日後、何週間後など、どこまで先の予約を受け付けるか
これらの適切な値は、予約の目的や準備に必要な時間によって変わります。例えば、移動を伴う面談なら前後に余白が必要ですし、資料を確認してから面談するなら直前予約を避けた方がよいでしょう。ここは他の人の設定をそのまま使わず、自分の運用に合わせて決めます。
自分は以下のように設定しました。
イベント前 / イベント後:前後とも10分- 最低頻度の通知:2日
- 時間帯間隔:15分
- 今後の予約期間の設定:90日
講義室と研究室の移動を考えて、バッファは前後10分とし、直前に予定を入れられてもバタバタするので、直近2日は予約ができないようにしました。あと、時間は15分、30分、60分と15の倍数なので15分間隔で合わせやすいようにしました。今後の予約期間は、先すぎると予定の重要性を考慮できないので3ヶ月としました。
予約フォームで相談内容を事前に確認する
予約フォームは、予約者の負担が大きくならないように、次のようなシンプルな構成にしました。
- 名前(必須)
- メールアドレス(必須)
- 相談内容(必須)
- 備考(必要に応じて)
「このミーティングの内容は?」の項目を有効にし、相談内容を予約時に入力してもらいます。面談の目的を事前に把握できれば、必要な資料や確認事項を準備できます。
メールアドレスは予約確認やリスケジュールの際に連絡先が必要なので入力を必須にしてます。
入力項目を増やしすぎると予約者の負担になります。予約前に必ず知りたい情報だけを必須にし、補足情報は任意項目にする方が運用しやすいと思います。
キャンセルと日程変更を設定する
予約後に都合が変わることもあるため、予約者自身でキャンセルと日程変更ができるようにしました。確認メールなどから手続きできれば、主催者とのメールの往復を減らせます。
ただし、すでに終了したイベントまで変更できる必要はありません。過去のイベントの変更を許可する設定にはせず、今後の予約だけを対象にしています。運用によっては直前のキャンセルや変更に期限を設けることも検討できます。
ワークフローを使わなかった理由
Cal.comには「ワークフロー」という機能があり、予約の作成時や開始前などをきっかけに、通知やリマインドを自動化できます。例えば、予約の24時間前にメールを送るといった使い方が考えられます。
今回は使用しませんでした。Google Calendar側ですでに予定のリマインドを設定しており、同じ役割をCal.comにも持たせると通知設定が二重になり、管理が複雑になるためです。
役割分担は次のようにしています。
- Cal.com:予約ページの提供、複数カレンダーの空き判定、予約受付
- Google Calendar:普段の予定管理、確定した予約の保持、リマインド
利用できる機能をすべて有効にするのではなく、すでに使っている仕組みと役割が重ならないようにすることで、設定箇所を減らせます。
実際の予約ページからテストする
設定後は、管理画面だけで完了とせず、予約者と同じように公開用の予約ページを開いてテスト予約を行いました。できれば、Cal.comへログインしていないブラウザやシークレットウィンドウでも確認すると、予約者側の表示を把握しやすくなります。
今回確認した項目は次の通りです。
- 競合チェック対象の複数カレンダーに入っている予定が予約不可になる
- 15分、30分、60分の所要時間を選択できる
- 予約すると、
Add events toで指定したGoogleカレンダーに予定が追加される - 開催場所として「研究室534」が正しく表示される
- 入力された相談内容を確認できる
- 確認メールが届く
- 予約者が日程変更とキャンセルを行える
特に競合チェックは、カレンダーAだけに予定を入れた場合と、カレンダーBだけに予定を入れた場合を分けて確認しました。どちらの予定も予約ページから除外されれば、複数カレンダーの設定が意図通りに機能していると判断できます。テスト後は、作成したテスト予約と予定を削除します。
まとめ
今回Cal.comを導入した最大の理由は、複数のGoogleカレンダーを横断して、本当に空いている時間だけを予約可能にするためです。
予定管理の中心は、これまで通りGoogle Calendarです。Cal.comは、複数のGoogleカレンダーを参照して空き時間を判定し、外部の人から予約を受け付けるためのフロントエンドとして使うための設定の説明をしました。
参考情報
- Cal.com Pricing
- Cal.com Help:Event Types
- Cal.com Help:Multiple durations
- Cal.com Help:Set up your availability
- Cal.com Help:Custom time-slot intervals
- Cal.com Help:Event buffers
- Cal.com Help:Booking Questions
- Cal.com Help:Workflows
※本記事はAIの原稿を基に、修正を加えた記事です。



コメント