---
title: "予約システムを無料でGoogleだけで作る方法｜予約スケジュール・フォーム・Apps Scriptの3構成と限界"
url: "https://www.issoh.co.jp/column/details/18237/"
published: 2026-10-10
updated: 2026-10-10
categories: ["Webシステム"]
publisher: "株式会社一創"
---

# 予約システムを無料でGoogleだけで作る方法｜予約スケジュール・フォーム・Apps Scriptの3構成と限界

Googleの無料ツールで予約を受ける方法は、カレンダーの「予約スケジュール」、Googleフォームとスプレッドシート、フォームとApps Scriptの3つに分かれます。どれも追加費用なしで始められますが、無料アカウントで作れる予約ページは1つだけで、リマインダーの自動送信や事前決済は有料プランの機能です。この記事では、3構成の向き不向き、予約スケジュールの設定手順、フォームで二重予約を防ぐスクリプトの組み方、Googleビジネスプロフィールへの予約リンクの置き方を、Googleの公式ヘルプの記載（2026年10月時点）をもとに整理します。最後に、無料構成で続けてよい条件と、有料サービスや開発へ移る判断基準を示します。

## まとめ｜Googleの無料ツールで予約を受ける3つの構成と、別の仕組みへ移る条件

1人で受ける面談・相談・レッスンなら、カレンダーの予約スケジュールが最短です。空き時間の表示、予約の受付、予定の登録までを画面の設定だけで組めます。無料の範囲は予約ページ1つまでで、リマインダーの自動送信、事前決済、複数カレンダーの空き確認は使えません。

空き枠を見せる必要がない申込受付なら、Googleフォームとスプレッドシートで足ります。ただし確定連絡は手作業になり、同じ時間への申込を止める仕組みはありません。フォームにApps Scriptを足せば空きの確認と予定登録を自動化できますが、同時送信の排他処理を書かないと二重予約が起きます。

移る判断は単純です。決済、定員付きの枠、スタッフ指名、自動リマインドのどれか1つが必要になった時点で、無料のGoogle構成は卒業してください。既製の予約サービスで足りない要件が残る場合に限り、開発を検討します。

## Googleの無料ツールで組める予約の仕組み3構成と、それぞれが向く受付の形

### カレンダーの予約スケジュール｜無料アカウントで予約ページ1つまでの構成

予約スケジュールは、自分のGoogleカレンダーの空き時間を予約ページとして公開し、予約者が枠を選ぶと双方のカレンダーに予定が入る機能です。カレンダーに既にある予定の時間帯は予約ページに出ないため、1人の担当者の時間を売る受付とは相性が良好です。

制約は、[予約スケジュールのプレミアム機能の比較表](https://support.google.com/calendar/answer/16287038?hl=ja)にあるとおり、個人アカウントでは予約ページを1つしか作れない点です。「初回相談30分」と「通常レッスン60分」のように長さの違うメニューを2つ並べることは、無料のままではできません。

### Googleフォームとスプレッドシート｜空き枠を持たない申込受付の構成

Googleフォームに希望日時の質問を置き、回答をスプレッドシートに集める構成です。説明会や見学会のように日程の候補が決まっていて、主催者が後から確定連絡をする受付なら、これで足ります。

弱点は、フォームが空き状況を知らないことです。満席の回にも申込が入り、確定と断りの連絡を人が書くことになります。希望日時を選択式にして、埋まった選択肢を手で消す運用が限界で、申込が週に十数件を超えると転記と連絡の手間が受付担当の作業時間を圧迫します。

### フォームとApps Scriptの組み合わせ｜空き確認と予定登録を自動化する構成

フォームの送信をきっかけにApps Scriptを動かし、カレンダーの空きを確認して予定を作り、予約者に確定メールを送る構成です。予約スケジュールにない項目（来店人数・要望・同意チェック）を自由に持てる点と、複数メニューを1つのフォームで受けられる点が利点です。

代わりに、スクリプトの保守を誰かが引き受けることになります。フォームの質問名を変えるとスクリプトが値を読めなくなる、作成者が退職すると権限ごと止まる、といった事故は設定画面の機能では起きない種類のものです。

### 3構成の比較表｜費用・二重予約の防ぎ方・決済・通知・向く規模

3構成を、運用で差が出る項目で並べると次のとおりです（無料の個人アカウントの場合）。

| 項目      | 予約スケジュール    | フォーム＋スプレッドシート | フォーム＋Apps Script |
| ------- | ----------- | ------------- | ---------------- |
| 空き枠の表示  | 自動          | なし            | なし（送信後に判定）       |
| 二重予約の防止 | カレンダーの予定で自動 | 人の確認のみ        | スクリプトの排他処理次第     |
| 確定メール   | 自動          | 手作業           | スクリプトで送信         |
| リマインダー  | 有料プランのみ     | 手作業           | スクリプトで送信可        |
| 事前決済    | 有料プランのみ     | 不可            | 不可               |
| メニュー数   | 予約ページ1つ     | 制限なし          | 制限なし             |
| 向く規模    | 担当1人の面談・相談  | 候補日が決まった説明会   | 担当1人・複数メニュー      |

表のとおり、どの構成も「担当者1人分の時間」を扱う前提です。席や部屋と人を同時に押さえる受付は、3構成のどれでも素直には作れません。

## 予約スケジュールを無料アカウントで設定する手順と、最初に決める4つの値

### 作成から公開までの手順｜パソコンのブラウザで予約ページを作る流れ

[Googleカレンダーヘルプの「予約スケジュールを作成する」](https://support.google.com/calendar/answer/10729749?hl=ja)によると、予約スケジュールはAndroidやiPhoneのカレンダーアプリでは作れず、パソコンのブラウザから作成します。流れは次の5段階です。

1. パソコンでGoogleカレンダーを開き、左上の「作成」から「予約スケジュール」を選ぶ
2. 予約の長さ、通常時の空き時間（曜日と時間帯）、予約受付期間を入力する
3. 準備時間と1日あたりの予約件数の上限を決め、「次へ」を押す
4. 予約ページの名前、場所（対面・電話・Google Meet）、説明、予約フォームの項目を入力して保存する
5. 予約ページのURLをコピーし、ホームページやSNSのプロフィールに貼る

予約フォームの必須項目は名・姓・メールアドレスの3つで、電話番号や相談内容は「項目の追加」で足します。

### 予約の長さ・準備時間・1日の上限・受付期間を業態に合わせて決める基準

公開前に決める値は4つです。予約の長さは実際の対応時間に合わせ、片付けや移動の時間は準備時間として別に置きます。60分の施術に15分の片付けが要るなら、長さ60分・準備時間15分です。長さを75分にすると、予約者に表示される所要時間が実態とずれます。

1日あたりの予約件数の上限は、1人で受けられる体力の上限として使えます。受付期間は、初期設定だと予定開始の4時間前で締め切られるため、当日の空きが予約ページに出ないことがあります。当日予約を受けたい店舗は、ここを短く変えてから公開してください。

### 無料のままでは使えない機能｜リマインダー・決済・複数カレンダー確認

プレミアム機能の比較表に並ぶのは7項目です。複数の予約スケジュール、リマインダーメールの自動送信、複数カレンダーでの空き状況確認、予約に対する支払いの受け付け、スパム予約を防ぐメールアドレス確認、予備のカレンダーへの追加、最大20人の共同主催者です。これらは対象のGoogle WorkspaceまたはGoogle Oneの契約が前提になります。

実務で響くのはリマインダーと決済の2つです。無断キャンセルが月に数件出る業態では、前日のリマインドがないことが無料構成の最大の弱点になります。なお、Workspaceでも Frontline と Essentials のプランでは予約スケジュール自体を作れないため、会社のアカウントで試す前にプランを確認してください。

## Googleフォームで予約を受けるときに二重予約を防ぐApps Scriptの組み方

### フォーム送信時に空きを確かめて予定を入れるスクリプトの最小構成

フォームの回答先スプレッドシートに、次のスクリプトを置きます。拡張機能メニューからApps Scriptを開いて貼り付け、トリガーの設定で関数 onFormSubmit を「スプレッドシートから・フォーム送信時」に登録します。フォームには「お名前」「メールアドレス」「希望日時」（日付と時刻の質問）の3問がある前提です。

```
const SLOT_MINUTES = 60; // 1枠の長さ（分）

function onFormSubmit(e) {
  const lock = LockService.getScriptLock();
  lock.waitLock(30000); // 他の送信の処理が終わるまで最大30秒待つ
  try {
    const v = e.namedValues;
    const name = v['お名前'][0];
    const mail = v['メールアドレス'][0];
    const start = new Date(v['希望日時'][0]);
    const end = new Date(start.getTime() + SLOT_MINUTES * 60 * 1000);
    const cal = CalendarApp.getDefaultCalendar();

    if (cal.getEvents(start, end).length > 0) {
      MailApp.sendEmail(mail, 'ご希望の日時は埋まっています',
        name + ' 様\nお手数ですが別の日時で再度お申し込みください。');
      return;
    }
    cal.createEvent('予約：' + name, start, end, {description: mail});
    MailApp.sendEmail(mail, 'ご予約を承りました',
      name + ' 様\n' + start.toLocaleString('ja-JP') + ' でご予約を承りました。');
  } finally {
    lock.releaseLock();
  }
}
```

空きの判定は、希望時間帯に重なる予定がカレンダーに1件でもあれば満席とみなす単純なものです。営業時間外の申込を弾く判定や、定休日の扱いは別途足す必要があります。

### 同時送信で二重予約が起きる仕組みと、LockServiceで順番に処理する方法

上のコードから LockService の3行を外すと、2人がほぼ同時に同じ枠へ送信したとき、両方の処理が「空いている」と判定してから予定を作るため、同じ時間に予約が2件入ります。判定と登録の間にほかの処理が割り込める限り、この重なりは防げません。

[Apps ScriptのLockService](https://developers.google.com/apps-script/reference/lock/lock-service?hl=ja)の getScriptLock でスクリプト全体のロックを取り、waitLock で取得まで待たせると、送信は1件ずつ順番に処理されます。待ち時間を超えると例外になるので、予約が集中する受付では待ち時間を長めに取ってください。カレンダー運用一般で二重予約が起きる構造は、[Googleカレンダー運用の限界と同期方式の選び分け](https://www.issoh.co.jp/column/details/16973/)で詳しく扱っています。

### 無料アカウントの実行上限｜通知メール1日100人と予定作成5,000件の天井

[Apps Scriptの割り当て](https://developers.google.com/apps-script/guides/services/quotas?hl=ja)では、gmail.comなどの一般ユーザー向けアカウントの上限が次のように定められています。

- メール受信者数：1日100人（Workspaceは1,500人）
- カレンダーの予定の作成：1日5,000件（Workspaceは10,000件）
- トリガーの合計実行時間：1日90分（Workspaceは6時間）
- スクリプトの実行時間：1実行あたり6分

先に当たるのはメールです。確定メールに加えて前日リマインドも送ると、1件の予約で2通を使うため、1日50件前後の予約で上限に届きます。予約が1日数十件に近づいたら、無料のApps Scriptで運用を続ける段階を過ぎています。

## Googleビジネスプロフィールに予約リンクを置いて検索から予約を受ける方法

### ローカルビジネスリンクの「予約」に予約ページのURLを登録する手順

店舗や事務所がGoogleビジネスプロフィールを持っているなら、予約スケジュールのURLをプロフィールの予約リンクに登録できます。[ビジネスプロフィールヘルプの「ローカル ビジネス リンク」](https://support.google.com/business/answer/6218037?hl=ja)に沿った手順は、管理画面で取引の種類「予約」を選び、「リンクを追加」にURLを入れて保存するだけです。

リンクはカテゴリごとに最大10個まで追加でき、複数あるときは上部に出す優先リンクを指定できます。ローカル ビジネス リンクはBusiness Profile APIやスプレッドシートのアップロードでは追加できないため、多店舗でも1店舗ずつ管理画面から登録します。地図検索からの集客全体の設計は[MEO対策の費用相場と自分でやる手順](https://www.issoh.co.jp/column/details/15089/)を参照してください。

### 予約パートナー経由の予約ボタンと自前リンクの違い、削除の仕方

Googleは特定のサードパーティの予約サービスと連携しており、そのサービスへのリンクがプロフィールに自動的に表示されることがあります。過去に使っていた予約サービスのリンクが残り、自前の予約ページと並んで出るケースがこれに当たります。

不要なリンクは、Google検索の「予約」から「プロバイダを削除」で外せます。ヘルプによると、プロバイダは削除リクエストから5日以内に対応する必要があります。自前の予約スケジュールに一本化するなら、登録と同時に古いリンクの削除まで済ませてください。

## Googleの無料構成で続けてよい条件と、有料サービス・開発へ移る判断基準

### 無料のGoogle構成で続けてよいと言い切れる4つの条件と、その共通点

次の4つがすべて当てはまるなら、無料のGoogle構成のままで問題ありません。

- 予約を受ける担当者が1人で、席や部屋を別に押さえる必要がない
- メニューが1種類か、フォーム構成で複数メニューを受けられている
- 代金は当日払いで、事前決済やキャンセル料の請求をしない
- 無断キャンセルが月に1〜2件以内で、リマインドを手で送れている

共通点は「予約が担当者の時間の予定表で完結する」ことです。予約が予定表の外の情報（在庫・定員・入金）に触れ始めた時点で、無料構成の前提が崩れます。他社の無料プランも含めた比較は[予約システムの無料プランの上限と切り替えライン](https://www.issoh.co.jp/column/details/17465/)で整理しています。

### 有料の予約サービスへ移るべき兆候｜決済・定員・指名・リマインドの4要件

事前決済、定員付きの枠（1枠に複数人）、スタッフ指名、自動リマインドの4つは、無料のGoogle構成で無理に作らないでください。予約スケジュールの設定項目には定員の欄がなく、スタッフごとの空きを1ページで見せる仕組みもありません。Apps Scriptで作り込めば形にはなりますが、作成者しか直せない仕組みが店舗の売上を握ることになります。

この段階では、4要件を設定画面で扱える既製の予約サービスに移るほうが、作り込みより安く確実です。LINEから予約を受けたい場合は[予約管理システムのLINE連携の実装方式](https://www.issoh.co.jp/column/details/16971/)、月額と3年総額の比較は[予約システムの料金と課金体系の比較](https://www.issoh.co.jp/column/details/16967/)が判断材料になります。

### 自社開発を検討する境界と、Googleの構成を残したまま足す中間解

開発を検討してよいのは、既製の予約サービスでも表現できない要件が残る場合だけです。具体的には、基幹システムや会員データベースと予約を同じデータで扱いたい、業界固有の予約ルール（送迎枠・設備の組み合わせ・資格を持つ担当者の割り当て）がある、複数拠点の予約を1つの画面で管理したい、の3つが典型です。

逆に、予約ページ1つで受けている段階から開発に進むのは過剰です。まずは既製サービスに移り、Googleカレンダーへの書き出しだけ残す中間解で運用を固めてください。要件が既製品の枠を越えた段階での設計と費用感は、[一創の予約管理システム開発](https://www.issoh.co.jp/service/system/reservation/)でご相談いただけます。予約システムの機能と種類の全体像は[予約システムとは何かを機能・種類・費用から整理した記事](https://www.issoh.co.jp/column/details/12829/)にまとめています。

## よくある質問

Googleの無料ツールで予約を受けるときに、よく寄せられる疑問に答えます。

### Googleカレンダーの予約スケジュールは完全に無料で使えますか？

個人のGoogleアカウントなら、予約ページを1つ作るところまで無料で使えます。空き時間の公開、予約の受付、予約フォームの項目追加、準備時間や1日あたりの件数上限の設定も無料の範囲です。複数の予約ページ、リマインダーメールの自動送信、予約時の支払い受け付け、複数カレンダーの空き確認は、対象のGoogle WorkspaceまたはGoogle Oneの契約が必要なプレミアム機能です。

### スマートフォンだけで予約ページを作れますか？

作れません。Googleカレンダーのヘルプでは、AndroidとiPhone・iPadのカレンダーアプリでは予約スケジュールを作成できず、パソコンのブラウザを使うよう案内されています。作成した予約ページの共有や、入った予約の確認は、スマートフォンからでも可能です。パソコンが手元にない場合は、作成と設定変更だけ一度パソコンで済ませる運用になります。

### 1つの枠に複数人の予約を受けられますか？

予約スケジュールの設定項目には定員の欄がなく、1枠に複数人を受ける説明会やグループレッスンの受付には向きません。Googleの無料ツールで済ませるなら、Googleフォームで申込を集め、回ごとの人数をスプレッドシートで数える構成になります。満席の判定まで自動化したい場合は、定員付きの枠を持つ既製の予約サービスに移るほうが確実です。

### Googleフォームで作った予約受付から確定メールを自動で送れますか？

フォームの回答先スプレッドシートにApps Scriptを置き、フォーム送信時のトリガーでメールを送れば自動化できます。ただし、一般ユーザー向けアカウントのApps Scriptはメール受信者数が1日100人までです。確定メールとリマインドの両方を送ると1日50件前後の予約で上限に届くため、予約が多い受付では既製の予約サービスに切り替えてください。

### Googleマップから直接予約を受けることはできますか？

Googleビジネスプロフィールのローカルビジネスリンクで「予約」の種類に予約ページのURLを登録すれば、検索結果やマップのプロフィールから予約ページへ誘導できます。予約スケジュールのURLもそのまま登録できます。リンクの追加はプロフィールの管理画面から行い、APIやスプレッドシートのアップロードでは追加できません。

## 関連記事

- [予約システムとは？機能・種類・費用と既製サービスで足りない場合の開発判断](https://www.issoh.co.jp/column/details/12829/)：予約システムの機能と種類の全体像
- [予約システムの無料プランはどこまで使えるか？件数の上限と有料・自社開発へ切り替える判断ライン](https://www.issoh.co.jp/column/details/17465/)：Google以外の無料プランとの比較
- [予約管理システムのカレンダー連携｜Googleカレンダー運用の限界と同期方式3つの選び分け](https://www.issoh.co.jp/column/details/16973/)：予約システムへ移った後のカレンダー同期の設計
- [予約システムの料金｜5製品の料金比較と課金体系3タイプ、3年総額で見る開発への分岐](https://www.issoh.co.jp/column/details/16967/)：有料サービスへ移るときの費用比較

---

出典: [予約システムを無料でGoogleだけで作る方法｜予約スケジュール・フォーム・Apps Scriptの3構成と限界](<https://www.issoh.co.jp/column/details/18237/>)（株式会社一創）
