Googleフォームで予約システムを作る方法【カレンダー連動あり】

Google

「無料で予約システムを作りたい」「予約枠の管理をもっと楽にしたい」
そんなときに便利なのが Googleフォーム × Googleカレンダー を使った予約管理です。

Googleフォームは本来アンケート用のツールですが、入力項目を工夫したり、Google Apps Script(GAS)と連動させることで、簡易的な予約システムとして運用することができます。

実現可能な機能
  • 自動で空き枠だけをユーザーに表示する
  • 予約されたらカレンダーに自動登録する
  • 重複予約を自動で防止する
  • 予約完了メールを自動返信する

すべて無料で実現可能です。

専門的な予約システムを導入すると月額費用がかかりがちですが、Googleフォームなら 個人事業・サロン・スクール・相談窓口でも十分使えるレベルの予約管理 を作れます。

この記事では、

  • Googleフォームで予約フォームを作る方法
  • 重複予約を防ぐ方法
  • Googleカレンダーと連動する設定
  • 自動返信メールの設定
  • 実用的な予約フォームのテンプレ

まで、初心者でもわかるように丁寧に解説します。
「無料で使える予約システムを作りたい」という人は、この記事を読みながらそのまま作れば完成します。

Googleフォームで予約システムは作れる?

結論から言うと、Googleフォームだけで完全な予約システムを作ることはできません。
ただし、Googleフォーム+Googleスプレッドシート+Googleカレンダー+GAS(Google Apps Script) を組み合わせることで、

  • 予約の受付
  • 自動返信メール
  • 予約内容の一覧管理
  • カレンダーへの自動登録
  • 重複予約の防止

といった 実用レベルの予約管理システムを無料で構築することができます。

Googleフォーム単体でできること
  • 予約者の入力フォームを作成
  • メールアドレスの自動収集
  • 予約内容の一覧(スプレッドシート連携)
  • 手動での確認・管理

最低限の「予約受付フォーム」は作れます。

Googleフォーム単体ではできないこと

Googleフォームには下記のような予約システムに必須の機能がありません。

  • 空き枠の自動表示
  • 予約枠の管理
  • 重複予約の防止
  • カレンダーとの自動連動
  • 予約完了メールのカスタム送信

そのため、フォームだけでは予約システムとしては不十分 です。

Googleスプレッドシート・GASを使えば“多機能予約管理”が実現可能

Googleフォームとスプレッドシートを連携し、GAS(Google Apps Script)を少し追加することで、下記が可能になります。

重複予約を自動で止める

同じ日時に予約が入っていたら受付停止。

Googleカレンダーに自動で予定を追加

ダブルブッキング防止 & 確認が楽。

予約者に自動返信メールを送る

受付完了メールを即時返信。

空き枠を自動で判定して表示

選択式で「空いている時間」だけ出す。
つまり、無料かつ手軽に運用できる予約管理ツールとして十分実用的です。

ポイントまとめ
  • Googleフォームだけでは予約システムは不完全
  • ただし「Googleフォーム × スプレッドシート × カレンダー × GAS」で無料の予約システムを構築できる
  • 小規模な予約サービスなら十分運用可能
  • 導入コストゼロで使いやすく、初心者にもおすすめ

Googleフォームで予約フォームを作る基本手順

Googleフォームを使った予約システムづくりの第一歩は、予約に必要な情報を正しく入力してもらうフォームを作成することです。
ここでは、もっともシンプルな「予約受付フォーム」を作る手順を解説します。

1.Googleフォームを新規作成する

  1. Googleフォームを開く
  2. 「空白」または「テンプレートから作成」を選ぶ
  3. フォームのタイトルと説明文を入力する
  • タイトル:◯◯予約フォーム
  • 説明:希望日時と必要事項をご記入ください。

2.予約に必要な質問項目を作成する

予約受付に必要な情報は、最低限以下の通りです。

必須項目にすべき内容
  • 名前
  • メールアドレス
  • 予約希望日
  • 予約希望時間
  • 利用内容(またはメニュー)

それぞれの質問を作成していきます。

(1)名前

  • 種類:短文
  • 必須:オン

(2)メールアドレス

予約連絡などに必須となる項目です。

  • 種類:短文
  • 必須:オン
  • 「回答の検証」→「メールアドレス」で形式チェックを入れると確実です。

(3)予約希望日

例)種類:日付
Googleフォームの「日付」形式を使えば、カレンダー入力ができます。

(4)予約希望時間

例)

  • 種類:時刻
    または
  • 種類:プルダウン(複数の候補時間がある場合)

※「××時〜××時」といった予約枠を作る場合は、プルダウン形式がわかりやすいです。

(5)利用内容・メニュー

飲食店・美容院・教室など、予約内容が複数ある場合に使います。

  • 種類:プルダウン / ラジオボタン
  • 必須:オン

(6)自由記述(任意)

  • 種類:段落
    例:特記事項や質問などを記入してもらう欄

3.回答設定を整える(おすすめ設定)

Googleフォーム右上の「設定」から以下を設定します。

メールアドレスを収集→予約連絡に必須
確認メール(自動返信)をオン→「送信者に回答のコピーを送信」をオンにすると、フォーム回答がメールで届く

後でGASを使えば「完全な予約完了メール(カスタム)」も送れます。

4.Googleスプレッドシートと連携する

フォームの「回答」タブ → 「スプレッドシート作成」を選択すると、

  • 予約一覧の管理
  • 重複予約チェック
  • カレンダー自動登録

などが可能になります。
予約システム構築では必須で必要です。

5.フォームを公開する

  • 画面右上「送信」をクリック
  • リンクをコピー
  • QRコード・メール・SNS・サイトに貼り付けて公開

すぐに予約受付がスタートできます。

  • 予約を受け付けられる
  • 入力内容をスプレッドシートで確認できる
  • 基本的な予約フォームとして運用可能
次のステップで多機能な予約システムになる

次のパートで解説するように、

  • 重複予約の防止
  • Googleカレンダーへの自動登録
  • 予約完了メールの自動送信

などを追加すると、本格的な “無料の予約システム” に進化します。

Googleフォーム × スプレッドシート × Apps Script で予約システム化する手順

oogleフォーム単体では「空き枠の管理」や「自動で枠を非表示にする」などの機能はありません。
しかし、ここから紹介するステップを追加することで、実際に予約枠と連動した “本格的な予約システム” として運用できる ようになります。

実現できること
  • 空き枠を自動で管理
  • 満席になったら自動で受付停止
  • Googleカレンダーと連動
  • 管理者に自動通知
  • 予約者にも自動返信メール
  • スプレッドシートで履歴を一元管理

ステップ①:Googleフォームの回答をスプレッドシートに連携する

できるようになること

  • 予約データをスプレッドシートに保存
  • 集計・満席判定が可能に
  • スクリプト連携の準備完了

手順

  1. Googleフォームを開く
  2. 上部タブの「回答」をクリック
  3. 右上の 緑のスプレッドシートアイコン をクリック
  4. 次の画面で以下を選ぶ
    新しいスプレッドシートを作成 →「作成」
  5. 自動的にスプレッドシートが開き、回答が保存されるようになる

ステップ②:予約枠をスプレッドシートで管理する

できるようになること

  • 空き枠がリアルタイムで確認できる
  • 定員に達したら「満席」判定ができる

手順

  1. 回答が保存されているシートと同じファイル内で下部にある「+」をクリック → 新しいシートを作成
    ※名前は「予約枠」などに変更しておくと管理しやすい
  2. 次のような表を作成
日付時間定員予約数空き状況
  1. 「予約数」列に COUNTIFS を入れる
    (例:A列が日付、B列が時間、回答シートが「フォームの回答 1」)
=COUNTIFS('フォームの回答 1'!B:B, A2, 'フォームの回答 1'!C:C, B2)

・A2=管理シート側の日付
・B2=管理シート側の時間

  1. 「空き状況」に IF 関数を入れる
=IF(D2>=C2,"満席","空きあり")

これで予約が入るたびに自動更新されるようになります。

ステップ③:定員管理・満席時の受付ストップ(Apps Script 設定)

できるようになること

  • フォーム送信前に「満席です」と判定する
  • 満席になったら自動拒否

手順

  1. スプレッドシートを開く
  2. メニューの「拡張機能」→「Apps Script」を選択
  3. 新規プロジェクトが開いたら以下を貼り付ける

(※実用できるシンプルな例)

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());  
      }
    }
  }
}
  1. 保存 → トリガーの設定へ進む
  2. 「トリガーを追加」→イベントの種類を フォーム送信時 に設定
  3. 権限を許可して完了

これで満席時の受付ストップが機能します。

ステップ④:Googleカレンダーへ自動登録

できるようになること

  • 予約が入ると自動でカレンダーに予定追加
  • 管理者はスケジュールだけで状況把握できる

手順

  1. Apps Script のエディタを開く
  2. 先ほどのスクリプトに追記 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]}
  );
}
  1. トリガー追加 → フォーム送信時 を選択

ステップ⑤:予約者への確認メールを自動送信

手順

  1. 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
  );
}
  1. トリガー追加 → フォーム送信時に実行設定

ステップ⑥:管理者へ通知メールを送信

手順

function sendMailToAdmin(e) {
  const admin = 'あなたのメールアドレス';

  MailApp.sendEmail(
    admin,
    '【新規予約】通知',
    '新しい予約が入りました。スプレッドシートを確認してください。'
  );
}

同じくトリガー設定を追加するだけです。

まとめ

Googleフォームは単体では予約システムとして不十分ですが、Googleスプレッドシート × Googleカレンダー × Apps Script(GAS) と連動させることで、

  • 空き枠の自動管理
  • 重複予約の防止
  • カレンダー自動登録
  • 予約者・管理者への自動メール
  • 履歴の一元管理

といった 実用レベルの予約管理システム を無料で構築できます。

コード量も少なく、初心者でも十分扱える内容です。
個人事業・サロン・スクール・相談窓口など、小規模運営なら実務で問題なく使えます。

この記事の手順どおりに進めれば、誰でも「本格的な予約システム」を無料で作ることができます。

この記事を書いた人
管理人

2012年にWebデザインの勉強を始め、2013年より制作会社に勤務。
これまでに500件以上のWebサイト制作・運用に携わってきました。
現在も制作会社に勤務しながら、Webデザインスクールのトレーナーとしても後進の育成に取り組んでいます。
WordPressやデザインの実践的なノウハウを、初心者にもわかりやすく発信できるよう試行錯誤しています。

管理人をフォローする
Google
スポンサーリンク
管理人をフォローする

コメント

タイトルとURLをコピーしました