飲食店・サロン向け!自作予約システムを自動化!Geminiで作るやり方②

無料GPT

小規模飲食店、美容院、ネイルサロンなど向けに「小規模な予約フォームを作れないか(無料で)」実験を試した記事の続きです。(前回の記事はこちらです↓)

この自作の予約フォームが、もういっちょ便利に自動化されるといいなぁ…というのが今回のテーマです。

今回は「予約の要望をGoogleカレンダーに転送する」「予約の可否について返信メール文を自動作成する」このやり方を試してみたのでご紹介します。

Gemini
Gemini

全部わたしが指南しました

筆者
筆者

コード書けないけど
作れました!

使うのはGas(Google Apps Script)。仕上がり画面は以下のような感じです。これからやり方をご紹介します。

Googleスプレッドシートです。「予約の転送」「メール文の作成(OK)」「メール文の作成(NG)」のボタンを表の隣に作っています
Screenshot

作業のステップは全部で4つ!
完成後は「予約の転送」と「メール文の下書き作成」がボタン操作で自動化できます。

自作の予約フォームを自動化しよう!作りの肝はGeminiとGAS!

これから紹介する予約システムの仕様について、下記がイメージ図です。

イラストはChatGPTが生成

【Googleフォームで作る予約システム】概念

①Googleフォームで予約を受信(前回の記事
②Googleスプレッドシートに予約一覧表が表示される(前回の記事
③店主にメールが来る「予約が来たよ」(前回の記事

〜ここから今回のご紹介〜

④Googleスプレッドシートの「行」の内容をGoogleカレンダーに書き写す(ボタン1つで)
⑤「予約を承りました」というメールの下書きをGmailに保存(ボタン1つで)
⑥「その時間は予約がいっぱいです」という下書き文をGmailに保存(ボタン1つで)

Googleスプレッドシートの入力内容をGoogleカレンダーに書き写す、という作業に必要なのはGAS(Google Apps Script)というプログラミングです。

プログラミングとなるとひるみますが、今は生成AIのGeminiがプログラム文を作ってくれます。そして手順もGeminiが説明してくれます。つまずけば、何度でも教えてくれます。

筆者が体験してみた手順で「Googleのシステムを使った予約システム自動化」の手順をご説明します。

ちなみにLINEとGoogleフォームの接続については、以下の記事で手順をご紹介しています。

手順0:Googleカレンダーに「予約」のマイカレンダーを新設

まずは下準備です。

既にGoogleカレンダーをお使いの方は「プライベートの予定」に「予約帳」が混ざると嫌ですよね。予約ぶんだけを表示できる別のカレンダー項目を作りましょう。

まずはGoogleカレンダーを開きます。そして画面左下の「他のカレンダーを追加」の「+」マークをタップします。選択肢が出てきますので「新しいカレンダーを追加」を選択します。

そしてお好きな名前を入力しましょう。今回は「予約用」としましたが、お好きな名前でOKです。この画面を下にスクロールしていくと「カレンダーID」というのが表示されます。

画面をスクロールした先に、下図のような「カレンダーの統合」という欄がありますか(下記の赤枠)。

Screenshot

これが今回作った「予約用カレンダー表示」のためのIDになります。後でGeminiに送信する時に使います。とりあえず一旦Googleカレンダーの作業は終了して次の作業にいきます。

※IDはメモしなくても後でアクセスし直してコピペすればOKです。

手順1:いよいよプログラミング!Googleスプレッドシートを開こう

自動化プログラムを入力する場所はGoogleスプレッドシート(Googleの無料表計算ソフト)になります。という訳でスプレッドシートにログインしてみてください。

前回、Googleフォームを作って動かしてみた方は、Googleスプレッドシートにファイルが残っているはずです。こんな感じです(下図の赤枠)。クリックして開いてみましょう。

Screenshot

手順2:表計算ソフトの中に「押せるボタン」を作る方法

まずボタンを作りましょう。下図のような仕上がりイメージです。

Googleスプレッドシートです。「予約の転送」「メール文の作成(OK)」「メール文の作成(NG)」のボタンを表の隣に作っています
Screenshot

ボタンの作り方をご説明します。まずメニューバーから「挿入」をクリック(下図の①)そこにある「図形描画」をタップします(下図の②)。

Screenshot

すると下図のような画面になります。ツールバーは上部に横並びにあります。お好きな図形を描きましょう(下図の①)。そしてボタンが一目で分かる名前をつけましょう(下図の②)。図形の色を変えると押し間違いを防げます(下図の③)。

最後に④の保存して閉じるを押しましょう。

Screenshot

これを3回繰り返して3つのボタンを作りましょう。ボタンは右上のあたりにあると便利でしょうか。今回はそうしました(下図)

Googleスプレッドシートです。「予約の転送」「メール文の作成(OK)」「メール文の作成(NG)」のボタンを表の隣に作っています
Screenshot

これでボタン作りは終了です。

手順3:Geminiにコードを作ってもらいましょう

次にGoogleの生成AI・Geminiの出番です(もちろんチャットGPTでも同じプロンプトで作業できるはずです。「GASのコードを書いて欲しい」というプロンプトを下記にご用意しました。

ご自身の作りに応じて部分的な変更を加えた上で生成AIに投げかけてみてください。

Googleフォームで受け付けた予約内容を、スプレッドシート上のボタン操作で「Googleカレンダー登録」と「Gmail返信下書き作成」ができるシステムを作りたいです。

1. スプレッドシートの構成(シート1)

A列:タイムスタンプ

B列:お名前

C列:ご希望日(日付形式)

D列:ご希望時間(Googleフォームの「時刻」形式で、半角「19:00」等で入力される前提)

E列:人数

F列:料理のご希望

G列:その他のご要望

H列:メールアドレス

2. 実装したい3つの機能、3種類のボタン(GAS)
シート1の中に3つのボタンを作成しました。
名前は「予約の転送」「メール下書き(OK)」「メール下書き(NG)」。

① 予約内容をカレンダーに登録する(ボタン/予約の転送):

選択している行のデータを使用。

特定のカレンダーID(変数で指定可能にする)に登録。

タイトルは「19:00〜 〇〇様 2名 [料理内容] & [要望]」の形式。

予定の色は「グレー(番号8)」に設定。

② 予約確定メールの下書き作成(ボタン/メール下書き(OK)):

選択している行のメールアドレス宛に、日時・名前を引用した「確定メール」の下書きをGmailに作成する。

③ 調整依頼メールの下書き作成(ボタン/メール下書き(NG):

選択している行のメールアドレス宛に、「満席のため日程調整をお願いしたい」旨の「お断りメール」の下書きをGmailに作成する。

3. コードの条件

スプレッドシートの「見たままの文字列」を取得する getDisplayValues() を使用し、日時の解析エラーが起きにくい堅牢なコードにしてください。

各機能をスプレッドシート上の図形(ボタン)に割り当てて実行する形式にしてください。

ポイントは「シート1であること」「各列に何要素が入っているかを伝えておく」ことです。

ちなみに筆者が得られたコードは下記になります。

// 【設定】
const FORWARD_EMAIL = "当方のGメールアドレス@gmail.com";
const CALENDAR_ID = "ここに取得したカレンダーIDを貼り付けてください";

/**
* シートからデータを取り出す共通機能
*/
function getSelectedRowData() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const currentRow = sheet.getActiveCell().getRow();

if (currentRow < 2) {
Browser.msgBox("予約データのある行を選択してください。");
return null;
}

const range = sheet.getRange(currentRow, 1, 1, 8);
const values = range.getValues()[0];
const displayValues = range.getDisplayValues()[0]; // 画面上の文字をそのまま取得

return {
name: values[1],
dateStr: displayValues[2], // "2026/05/23"
timeStr: displayValues[3], // "19:00"
count: values[4],
menu: values[5],
memo: values[6],
email: values[7]
};
}

/**
* 1. Googleカレンダーに予約を登録する
*/
function forwardReservation() {
const d = getSelectedRowData();
if (!d) return;

try {
const calendar = CalendarApp.getCalendarById(CALENDAR_ID);

// 日付と時間を合体させて「いつ」かを確定させる
const startDateTime = new Date(`${d.dateStr} ${d.timeStr}`);

if (isNaN(startDateTime.getTime())) {
Browser.msgBox("日時の形式が読み取れません。フォームの入力形式を確認してください。");
return;
}

const endDateTime = new Date(startDateTime.getTime() + 60 * 60 * 1000); // 1時間後
const title = `${d.timeStr}〜 ${d.name}様 ${d.count}名 ${d.menu} & ${d.memo}`;

const event = calendar.createEvent(title, startDateTime, endDateTime, {
description: `お名前:${d.name}様\n人数:${d.count}名\n料理:${d.menu}\n要望:${d.memo}\nメール:${d.email}`,
location: "店舗"
});

event.setColor("8"); // グレーに設定
Browser.msgBox("カレンダーに登録しました!");

} catch (e) {
Browser.msgBox("エラー:「カレンダーID」が正しいか確認してください。");
}
}

/**
* 2. メール作成(OK/NG共通)
*/
function createDraftOK() { createDraft("【予約確定】", "ご予約ありがとうございます。確定いたしました。", getSelectedRowData()); }
function createDraftNG() { createDraft("【要返信】", "あいにく満席のため、別のお日にちをご検討いただけますか?", getSelectedRowData()); }

function createDraft(subjectPrefix, message, d) {
if (!d) return;
const subject = `${subjectPrefix} ご予約の件([店名])`;
const body = `${d.name} 様\n\n${message}\n\n日時:${d.dateStr} ${d.timeStr}\n人数:${d.count}名\n\n[署名]`;
GmailApp.createDraft(d.email, subject, body);
Browser.msgBox("Gmailの「下書き」に作成しました。");
}

Gemimiが作ったコードの中には「あなたの方で情報を書き加えてね」という箇所が明示されているはずです。書き換え方の注意点をお伝えします。

例えば下記のように””←カッコで囲われている部分です。

const FORWARD_EMAIL = “当方のGメールアドレス@gmail.com”;
const CALENDAR_ID = “ここに取得したカレンダーIDを貼り付けてください”;

筆者
筆者

“ ” ←カッコ消しません
カッコの中身を差し替えましょう!

const CALENDAR_ID = “42348xx7982s798192809829@group.calendar.google.com”;

こんな感じです。

手順4:生成コードをどうやって貼り付けるかGeminiに聞こう

さて、GASのコードはできました。次の問題はこれをどこに貼り付けるかです。Geminiに聞きましょう。プロンプトは下記になります。

私はGAS初心者で今回初めてGASを動かします。やり方を一から丁寧に教えてもらえますか。シート1に3つのボタンを作っています。

以降はGeminiが丁寧に教えてくれるはずです。一応このブログでも下記ご紹介しておきます。

4-1:スプレッドシートのボタンに「スクリプトの割り当て」やり方

おそらくGeminiまたはチャットGPTがこう言うはずです「各ボタンに役割を付与しましょう」。下記はサンプルです。

【ボタンにプログラムを割り当てる】

スプレッドシートに戻り、作成した3つの図形(ボタン)に機能を割り当てます。

  1. ボタン(図形)を右クリックし、右上の「︙」から「スクリプトを割り当て」を選択します。
  2. 以下の実行関数名を、それぞれのボタンに入力して「OK」を押します。
    • 予約の転送ボタン → forwardReservation
    • メール作成OKボタン → createDraftOK
    • メール作成NGボタン → createDraftNG

異なる英文かもしれませんがご自身のGASプログラミングの中身と、ボタンの役割名が合致していることが重要です。

まずはシート1に作ったボタンの右上にある「…」をタップします(下図)、そして「スクリプトの割り当て」を選択します。

Geminiの指示どおりの名前を入力して「確定」ボタンを押します(下図)。綴りや大文字小文字を間違えると動かないのでGeminiからコピペしましょう。

これをボタンの数だけ、今回は3回繰り返します。

4-2:GASを開いてGeminiが作ってくれたコードをコピペしよう!

これもおそらくGeminiが手順を教えてくれるはずですが、当ブログでは写真付きでご紹介しますね。スプレッドシートのシート1の状態の画面にします。

上部メニュー「拡張機能」を選択し(下図①)、Apps Scriptを選択します(下図②)。

Screenshot

すると下図の画面となったでしょうか。次に「コード.gs」が選択されていることを確認します。

次に右側のコードを全選択して全文消去します。真っ白なメモ帳状態になったところで、Geminiが生成したプログラムコードをペーストします。

コードを流し込んだら「Ctrl+S」(macはCommand+S)で保存しましょう。

筆者
筆者

あと一歩で動きますよ!

仕上げ:Googleのサービス同士を連携する設定のやり方

Googleの各サービスはデフォルトで「外からのファイル変更要求を受け付けない」という設定になっています。

Googleの各サービスのイラストです。行き来できないことを示す×印と「ブロック」の文字を書いています

ということで「このファイルからのアクセスのみ変更を許可」という設定変更を行いましょう。

試しにボタンを押してみると下記のように「認証が必要です」と表示されているはずです。

まずは「OK」を押します。次に「このアプリはGoogleで確認されていません」と出てきますので、左下の「詳細」のほうを押します。

Screenshot
筆者
筆者

どういう意味のメッセージかは
生成AIに聞けば教えてくれますよ

「詳細を押すと」下記のように「このApp Scriptが何にアクセスできるようにしたいか」と聞いてきますので「すべて選択」にチェックを入れます。

Screenshot
筆者
筆者

このファイルとだけ
連携機能が始まります

そして変更を保存したらスプレッドシートに戻り、試しにどこかのセルを選択し「メール下書きのボタンを押してみましょう」。セルがある「行」に対して動作が実行されます
下記のように「Gmailに下書きを作成しました。と出てくるのでは。

Gmailを開いて、下書きフォルダを見てみましょう。下記のようなメッセージが出てくれば成功です。

iphoneのスクリーンショットです。Gmailの下書きフォルダに文面が自動作成されたことを示しています。
筆者
筆者

文面の変更も生成AIに相談してみましょう!

次にスプレッドシートに戻り「転送ボタン」を押してみましょう。Googleカレンダーに表示されていたら成功です(下図)。

まとめ:生成AIに頼めばわずか4ステップで自動化が完成!

今回は、前回作ったGoogleフォームの予約システムをさらに便利に自動化する方法をご紹介しました。

ポイントをおさらいすると…

step.0…Googleカレンダーに専用カレンダーを新設する
step.1…GeminiにGASコードを書いてもらう
step.2…スプレッドシート上にボタンを作ってスクリプトを割り当てる
step.3…Googleサービス間の連携許可を設定する」

この4ステップで、ボタン1つでカレンダー登録・返信メール下書きの自動作成ができるようになります。

「プログラミングは難しそう…」と思っていた方も、Geminiが手順を丁寧に教えてくれるので、ぜひ一度試してみてください。「難しかったらまたGeminiに聞けばいい」くらいの気楽な気持ちで大丈夫です。

今回の続き編、作ったGoogleフォームをLINE公式と接続する方法は以下の記事で解説しています。もしよろしければあわせてご覧ください。

コメント

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