「無料で予約システムを作りたい」「予約枠の管理をもっと楽にしたい」
そんなときに便利なのが Googleフォーム × Googleカレンダー を使った予約管理です。
Googleフォームは本来アンケート用のツールですが、入力項目を工夫したり、Google Apps Script(GAS)と連動させることで、簡易的な予約システムとして運用することができます。
- 自動で空き枠だけをユーザーに表示する
- 予約されたらカレンダーに自動登録する
- 重複予約を自動で防止する
- 予約完了メールを自動返信する
すべて無料で実現可能です。
専門的な予約システムを導入すると月額費用がかかりがちですが、Googleフォームなら 個人事業・サロン・スクール・相談窓口でも十分使えるレベルの予約管理 を作れます。
この記事では、
- Googleフォームで予約フォームを作る方法
- 重複予約を防ぐ方法
- Googleカレンダーと連動する設定
- 自動返信メールの設定
- 実用的な予約フォームのテンプレ
まで、初心者でもわかるように丁寧に解説します。
「無料で使える予約システムを作りたい」という人は、この記事を読みながらそのまま作れば完成します。
Googleフォームで予約システムは作れる?
結論から言うと、Googleフォームだけで完全な予約システムを作ることはできません。
ただし、Googleフォーム+Googleスプレッドシート+Googleカレンダー+GAS(Google Apps Script) を組み合わせることで、
- 予約の受付
- 自動返信メール
- 予約内容の一覧管理
- カレンダーへの自動登録
- 重複予約の防止
といった 実用レベルの予約管理システムを無料で構築することができます。
- 予約者の入力フォームを作成
- メールアドレスの自動収集
- 予約内容の一覧(スプレッドシート連携)
- 手動での確認・管理
最低限の「予約受付フォーム」は作れます。
Googleフォームには下記のような予約システムに必須の機能がありません。
- 空き枠の自動表示
- 予約枠の管理
- 重複予約の防止
- カレンダーとの自動連動
- 予約完了メールのカスタム送信
そのため、フォームだけでは予約システムとしては不十分 です。
Googleスプレッドシート・GASを使えば“多機能予約管理”が実現可能
Googleフォームとスプレッドシートを連携し、GAS(Google Apps Script)を少し追加することで、下記が可能になります。
重複予約を自動で止める
同じ日時に予約が入っていたら受付停止。
Googleカレンダーに自動で予定を追加
ダブルブッキング防止 & 確認が楽。
予約者に自動返信メールを送る
受付完了メールを即時返信。
空き枠を自動で判定して表示
選択式で「空いている時間」だけ出す。
つまり、無料かつ手軽に運用できる予約管理ツールとして十分実用的です。
- Googleフォームだけでは予約システムは不完全
- ただし「Googleフォーム × スプレッドシート × カレンダー × GAS」で無料の予約システムを構築できる
- 小規模な予約サービスなら十分運用可能
- 導入コストゼロで使いやすく、初心者にもおすすめ
Googleフォームで予約フォームを作る基本手順
Googleフォームを使った予約システムづくりの第一歩は、予約に必要な情報を正しく入力してもらうフォームを作成することです。
ここでは、もっともシンプルな「予約受付フォーム」を作る手順を解説します。
1.Googleフォームを新規作成する
- Googleフォームを開く
- 「空白」または「テンプレートから作成」を選ぶ
- フォームのタイトルと説明文を入力する
- タイトル:◯◯予約フォーム
- 説明:希望日時と必要事項をご記入ください。
2.予約に必要な質問項目を作成する
予約受付に必要な情報は、最低限以下の通りです。
- 名前
- メールアドレス
- 予約希望日
- 予約希望時間
- 利用内容(またはメニュー)
それぞれの質問を作成していきます。
(1)名前
- 種類:短文
- 必須:オン
(2)メールアドレス
予約連絡などに必須となる項目です。
- 種類:短文
- 必須:オン
- 「回答の検証」→「メールアドレス」で形式チェックを入れると確実です。
(3)予約希望日
例)種類:日付
Googleフォームの「日付」形式を使えば、カレンダー入力ができます。
(4)予約希望時間
例)
- 種類:時刻
または - 種類:プルダウン(複数の候補時間がある場合)
※「××時〜××時」といった予約枠を作る場合は、プルダウン形式がわかりやすいです。
(5)利用内容・メニュー
飲食店・美容院・教室など、予約内容が複数ある場合に使います。
- 種類:プルダウン / ラジオボタン
- 必須:オン
(6)自由記述(任意)
- 種類:段落
例:特記事項や質問などを記入してもらう欄
3.回答設定を整える(おすすめ設定)
Googleフォーム右上の「設定」から以下を設定します。
メールアドレスを収集→予約連絡に必須
確認メール(自動返信)をオン→「送信者に回答のコピーを送信」をオンにすると、フォーム回答がメールで届く
後でGASを使えば「完全な予約完了メール(カスタム)」も送れます。
4.Googleスプレッドシートと連携する
フォームの「回答」タブ → 「スプレッドシート作成」を選択すると、
- 予約一覧の管理
- 重複予約チェック
- カレンダー自動登録
などが可能になります。
予約システム構築では必須で必要です。
5.フォームを公開する
- 画面右上「送信」をクリック
- リンクをコピー
- QRコード・メール・SNS・サイトに貼り付けて公開
すぐに予約受付がスタートできます。
- 予約を受け付けられる
- 入力内容をスプレッドシートで確認できる
- 基本的な予約フォームとして運用可能
次のステップで多機能な予約システムになる
次のパートで解説するように、
- 重複予約の防止
- Googleカレンダーへの自動登録
- 予約完了メールの自動送信
などを追加すると、本格的な “無料の予約システム” に進化します。
Googleフォーム × スプレッドシート × Apps Script で予約システム化する手順
oogleフォーム単体では「空き枠の管理」や「自動で枠を非表示にする」などの機能はありません。
しかし、ここから紹介するステップを追加することで、実際に予約枠と連動した “本格的な予約システム” として運用できる ようになります。
- 空き枠を自動で管理
- 満席になったら自動で受付停止
- Googleカレンダーと連動
- 管理者に自動通知
- 予約者にも自動返信メール
- スプレッドシートで履歴を一元管理
ステップ①:Googleフォームの回答をスプレッドシートに連携する
できるようになること
- 予約データをスプレッドシートに保存
- 集計・満席判定が可能に
- スクリプト連携の準備完了
手順
- Googleフォームを開く
- 上部タブの「回答」をクリック
- 右上の 緑のスプレッドシートアイコン をクリック
- 次の画面で以下を選ぶ
新しいスプレッドシートを作成 →「作成」 - 自動的にスプレッドシートが開き、回答が保存されるようになる
ステップ②:予約枠をスプレッドシートで管理する
できるようになること
- 空き枠がリアルタイムで確認できる
- 定員に達したら「満席」判定ができる
手順
- 回答が保存されているシートと同じファイル内で下部にある「+」をクリック → 新しいシートを作成
※名前は「予約枠」などに変更しておくと管理しやすい - 次のような表を作成
| 日付 | 時間 | 定員 | 予約数 | 空き状況 |
|---|
- 「予約数」列に COUNTIFS を入れる
(例:A列が日付、B列が時間、回答シートが「フォームの回答 1」)
=COUNTIFS('フォームの回答 1'!B:B, A2, 'フォームの回答 1'!C:C, B2)
・A2=管理シート側の日付
・B2=管理シート側の時間
- 「空き状況」に IF 関数を入れる
=IF(D2>=C2,"満席","空きあり")
これで予約が入るたびに自動更新されるようになります。
ステップ③:定員管理・満席時の受付ストップ(Apps Script 設定)
できるようになること
- フォーム送信前に「満席です」と判定する
- 満席になったら自動拒否
手順
- スプレッドシートを開く
- メニューの「拡張機能」→「Apps Script」を選択
- 新規プロジェクトが開いたら以下を貼り付ける
(※実用できるシンプルな例)
function onSubmit(e) {
const sheet = SpreadsheetApp.getActiveSpreadsheet();
const formSheet = sheet.getSheetByName('フォームの回答 1');
const reserveSheet = sheet.getSheetByName('予約枠');
const submittedDate = e.namedValues['日付'][0];
const submittedTime = e.namedValues['時間'][0];
const data = reserveSheet.getDataRange().getValues();
for (let i = 1; i < data.length; i++) {
if (data[i][0] == submittedDate && data[i][1] == submittedTime) {
const capacity = data[i][2];
const reserved = data[i][3];
if (reserved >= capacity) {
// 満席の場合:管理者に通知して受付拒否
MailApp.sendEmail(
e.namedValues['メールアドレス'][0],
'【予約エラー】満席のため受付できません',
'申し訳ありません。選択された日時は満席です。別の日時をお選びください。'
);
formSheet.deleteRow(formSheet.getLastRow());
}
}
}
}
- 保存 → トリガーの設定へ進む
- 「トリガーを追加」→イベントの種類を フォーム送信時 に設定
- 権限を許可して完了
これで満席時の受付ストップが機能します。
ステップ④:Googleカレンダーへ自動登録
できるようになること
- 予約が入ると自動でカレンダーに予定追加
- 管理者はスケジュールだけで状況把握できる
手順
- Apps Script のエディタを開く
- 先ほどのスクリプトに追記 or 新規関数を追加
function addToCalendar(e) {
const submitted = e.namedValues;
const calendar = CalendarApp.getCalendarById('あなたのGoogleカレンダーID');
const date = new Date(submitted['日付'][0] + ' ' + submitted['時間'][0]);
calendar.createEvent(
'【予約】' + submitted['名前'][0],
date,
new Date(date.getTime() + 60 * 60 * 1000), // 1時間
{description: submitted['メールアドレス'][0]}
);
}
- トリガー追加 → フォーム送信時 を選択
ステップ⑤:予約者への確認メールを自動送信
手順
- Apps Script に以下を追加
function sendMailToUser(e) {
const submitted = e.namedValues;
const body = `
${submitted['名前'][0]} 様
ご予約ありがとうございます。
以下の内容で受付いたしました。
-----------------------------------
■ 日付:${submitted['日付'][0]}
■ 時間:${submitted['時間'][0]}
■ お名前:${submitted['名前'][0]}
■ メール:${submitted['メールアドレス'][0]}
-----------------------------------
当日お待ちしております。
`;
MailApp.sendEmail(
submitted['メールアドレス'][0],
'【ご予約完了】ありがとうございます',
body
);
}
- トリガー追加 → フォーム送信時に実行設定
ステップ⑥:管理者へ通知メールを送信
手順
function sendMailToAdmin(e) {
const admin = 'あなたのメールアドレス';
MailApp.sendEmail(
admin,
'【新規予約】通知',
'新しい予約が入りました。スプレッドシートを確認してください。'
);
}
同じくトリガー設定を追加するだけです。
まとめ
Googleフォームは単体では予約システムとして不十分ですが、Googleスプレッドシート × Googleカレンダー × Apps Script(GAS) と連動させることで、
- 空き枠の自動管理
- 重複予約の防止
- カレンダー自動登録
- 予約者・管理者への自動メール
- 履歴の一元管理
といった 実用レベルの予約管理システム を無料で構築できます。
コード量も少なく、初心者でも十分扱える内容です。
個人事業・サロン・スクール・相談窓口など、小規模運営なら実務で問題なく使えます。
この記事の手順どおりに進めれば、誰でも「本格的な予約システム」を無料で作ることができます。






コメント