電話予約のみで受付 → 聞き間違いや書き忘れが発生。
予約帳が紙ベースのためダブルブッキングが月に2〜3回起きていた。
電話 → 紙に手書き
ダブルブッキング: 月2〜3回
確認連絡: 手動で電話
フォーム入力 → 自動でカレンダー登録
ダブルブッキング: ゼロ(自動チェック)
確認メール + LINE通知が即時
Google フォームに名前・希望日時・メニューを入力して送信します。
重複がなければ Google カレンダーに自動で予定を作成します。
予約が入ると LINE Notify でスタッフに即通知されます。
| 項目 | 内容 |
|---|---|
| ランタイム | Google Apps Script (V8) |
| トリガー | onFormSubmit(フォーム送信時) |
| カレンダー | CalendarApp(重複チェック + イベント作成) |
| 通知 | LINE Notify API(HTTP POST) |
| メール | GmailApp.sendEmail(確認 / お断り) |
| データ記録 | Google スプレッドシート |
// ===== フォーム送信トリガー =====
function onFormSubmit(e) {
const responses = e.namedValues;
const name = responses['お名前'][0];
const email = responses['メールアドレス'][0];
const dateTime = responses['希望日時'][0];
const menu = responses['メニュー'][0];
const startTime = new Date(dateTime);
const durationMin = CONFIG.MENU_DURATIONS[menu] || 60;
const endTime = new Date(startTime.getTime() + durationMin * 60000);
// 重複チェック
const calendar = CalendarApp.getCalendarById(CONFIG.CALENDAR_ID);
const conflicts = calendar.getEvents(startTime, endTime);
if (conflicts.length > 0) {
sendConflictEmail_(email, name, startTime, menu);
sendLineNotify_('予約重複: ' + name + ' ' + dateTime);
return;
}
// カレンダー登録 + 確認メール + LINE通知
calendar.createEvent(name + '様 - ' + menu, startTime, endTime);
sendConfirmEmail_(email, name, startTime, endTime, menu);
sendLineNotify_('新規予約: ' + name + ' ' + dateTime + ' ' + menu);
}