1この仕組みでできるようになること
長期レンタル(1か月・1週間)のお客様に、返却予定日の前に「延長しますか?」を自動でお知らせします。延長の意思が早めに分かるので、延長する方には入金のご案内を、しない方の分は返却の翌日から次のご予約を受けられます。
入れるとこうなります
- スタッフは契約時に1行書くだけ
- お知らせは毎日自動で送られる
- 1週間以内の返却予定がシートで一目で分かる
- 送った日時が記録として残る
- 電話するのは「一覧に出た人だけ」
2しくみの流れ
Google スプレッドシートと、Google の無料の自動化機能「GAS(ガス)」で作ります。GAS は触らなくて大丈夫です。中身は Codex が作ります。
- 契約したら、シートに1行書くスタッフお客様名・携帯番号・メール・車両・プラン(1か月/1週間)・貸出日・返却予定日
- 毎日12時に、GAS がシートを見に行く自動返却予定日までの日数を数えて、お知らせが必要な人だけを選びます
- お客様に「ご返却日のご案内」が届く自動返却の数日前と前日の2回。延長したい方は連絡を、とご案内します
- スタッフに「今日の一覧」が届く自動今日送った人・届かなかった人・まだ返事がない人・返却予定日を過ぎた人。電話はこの一覧の人だけ
- 延長になったら、返却予定日を書き換えるスタッフ新しい返却日に合わせて、もう一度お知らせが送られます
- 返却されたら「返却済み」にチェックスタッフ以後のお知らせは止まります。早めの返却でも同じです
- その日の夜に、お礼のメッセージが届く(ご希望なら)自動どんな内容を送るかは、作るときに Codex がお伺いします
3送るタイミングと文面(初期値)
| お知らせ | 1か月レンタル | 1週間レンタル | 内容 |
|---|---|---|---|
| 予告 | 返却の7日前 | 返却の3日前 | 返却日のご案内と、延長のご希望の確認 |
| 前日 | 返却の前日 | 明日が返却日であること、延滞料金のご案内 | |
| お礼(ご希望なら) | 返却済みにした日の夜(19時) | 送りたい内容を Codex にお伝えください(たたき台はありません) | |
※日数・時刻は初期値です。「設定」シートで変えられます。
文面のたたき台(予告・メール)
山田 太郎 様 いつも〇〇レンタカー △△店をご利用いただき、ありがとうございます。 ご利用中のお車(〇〇 名古屋 500 あ 12-34)のご返却予定日は 11月7日 です。 ご延長をご希望の場合は、お手数ですがお電話でご連絡ください。 ※ご返却予定日を過ぎた場合は、延滞料金(1日あたり通常料金の◯倍)がかかります。あらかじめご了承ください。 ご不明な点は 052-XXX-XXXX までお気軽にお問い合わせください。
SMS の場合(短くまとめます)
〇〇レンタカーです。明日11月7日がご返却日です。延長はご連絡ください。過ぎると延滞料金がかかります。052-XXX-XXXX
※文面はたたき台です。店舗名・延滞料金の決まりなどは、できあがったあと「設定」シートで書き換えられます。
4メールか SMS か、選べます
作り始めるときに Codex から「メール・SMS・両方のどれで送りますか?」と「返却後のお礼メッセージを送りますか?送るならどんな内容ですか?」の2つを聞かれます。あとから「設定」シートで切り替えることもできます。
メール
追加の契約なし・無料ですぐ始められます。Google アカウントから送ります(無料の Gmail は1日100通まで、Google Workspace は1,500通まで)。
SMS
携帯に直接届くのでいちばん気づいてもらいやすい方法です。Google の仕組みだけでは送れないため、SMS 配信サービス(有料)との契約が必要です。1通の料金・月額の有無・表示される送信者名・届いたかどうかが分かるかを比べて選んでください。契約が済むまでは、メールで動かしておくこともできます。
「読んだかどうか」について
SMS の「開封済み」は機種によって出たり出なかったりで、お店側のシステムでは受け取れません(メールも同じです)。代わりに次の2つで確認できた人を分けます。
- 届いたかどうか:届かなかった人は「要電話」に(SMS サービスが対応していれば)
- 確認ボタン:お知らせのリンクから「延長したい/予定どおり返却」を押してもらう。押した人は確認済み(希望すれば追加)
5細かいところは、あとから自分で調整できます
Codex はまず初期値とたたき台の文面で仕組みを作ってしまいます。そのあと、シートを書き換えるだけでお店に合わせて調整できます。
| 変えたいこと | どこで変えるか |
|---|---|
| お知らせの文面(メール・SMS) | 「文面」シート |
| メール/SMS/両方の切り替え | 「設定」シート |
| 何日前に送るか・前日にも送るか・お礼を送るか・送る時刻 | 「設定」シート |
| 店舗名・電話番号・延滞料金の書き方・延長の申し込み方法 | 「設定」シート(★印の項目) |
| お客様に送らずに試す | 「設定」シートのテストモードを TRUE に |
| それ以外(カレンダーにも入れたい など) | Codex に頼めば足してくれます |
6Codex で作り始める
やり方(3ステップ)
- 下の「URLをコピー」を押す
- Codex を開いて、新しいチャットに貼り付けて送る(URLだけでOK)
- 「メール・SMS・両方のどれで送るか」「返却後のお礼メッセージを送るか・どんな内容か」を聞かれたら答える。あとは Codex の案内どおりに進める
Codex が「ページを開けない」と言ったときだけ、「手順書の全文をコピー」を押して貼ってください。中身がそのまま伝わります。
Codex 向けの手順書(読まなくてOK)
# 長期レンタルのお知らせ自動化:AI向けの作業手順書
> **このファイルを読んでいるAI(Codex / Claude Code など)へ**
> あなたはこれから、レンタカー店の「長期レンタルのお知らせ」を自動化する仕組みを、Google スプレッドシート + Google Apps Script(GAS)で作ります。
> 依頼主はレンタカー会社の社長で、**プログラミングの経験はありません。** 専門用語を使わず、1回に1つの操作だけを案内し、「できました」の返事を待ってから次に進んでください。
>
> **進め方の約束**
> - 依頼主は、**細かいところ(文面・送る日・時刻など)は、できあがってから自分で調整したい**と考えています。最初に質問を並べないでください
> - 最初に聞くのは **「メールで送るか、SMSで送るか(両方も可)」** と **「返却後のお礼メッセージを送るか、送るならどんな内容か」** の2つだけです(下の 0.)
> - それ以外は、このファイルの**初期値と文面のたたき台で作ってしまい**、最後に「どこを変えれば何が変わるか」を一覧で伝えてください(8.)
---
## 何を作るか(ひとことで)
長期レンタル(1か月・1週間)のお客様に、**返却予定日の前に「延長しますか?」のお知らせを自動で送る**仕組みです。送る方法は**メールでもSMSでも選べます**(両方でも可)。
- スタッフは、契約したらシートに1行書くだけ
- 毎日12時に GAS が自動でシートを見て、送るべき人にだけお知らせを送る
- 延長したら返却予定日を書き換える → 新しい日付に合わせてもう一度お知らせが送られる
- 返却されたらチェックを入れる → それ以降のお知らせは止まる
- (希望すれば)返却済みにした日の夜に、お礼のメッセージを自動で送る
- 毎日、スタッフに「今日送った人・届かなかった人・まだ返事がない人・返却予定日を過ぎた人」の一覧が届く。**スタッフはその一覧の人にだけ電話すればよい**
### 背景(依頼主の困りごと)
- 長期レンタルの返却予定日を、スタッフが覚えたりホワイトボードに書いたりして管理している
- 1週間前に気づいて電話やメッセージをするのを、全部手作業でやっている
- 予約サイトには「今日の貸出・返却」は出るが、「1週間後に返却が来る人」は出ない
- 延長するかどうかが早めに分かれば、延長する人には入金を案内でき、しない人の分は返却の翌日から次の予約を受けられる
- 返却予定日を過ぎると延滞料金がかかる。「お知らせに気づかなかった」と言われないよう、**送った記録を残したい**
- 今後フランチャイズの加盟店にも同じ仕組みを配りたい(1店舗あたり150〜200台・スタッフ3人ほどを想定)
---
## 0. 最初に依頼主に聞くこと(この2つだけ)
### 質問1:「お客様へのお知らせは、メール・SMS・両方のどれで送りますか?」
| 選んだもの | このあとの進め方 |
|---|---|
| **メール** | 無料ですぐ始められる。1. と 2-1. を作る |
| **SMS** | SMS配信サービスとの契約(有料)が必要。先に 2-2. の「契約するサービスを選ぶ」を一緒にやり、契約できたら 1. と 2-2. を作る。**契約がまだなら、ひとまずメールで動かしておき、契約後に「設定」シートで SMS に切り替えられる**と伝える |
| **両方** | メールと SMS の両方に送る。上の2つを両方やる |
どれを選んでも、あとから「設定」シートの「送信方法」を変えるだけで切り替えられるように作ってください。**メールと SMS の両方の送信の仕組みは、最初から両方とも組み込んでおく**(SMS は API キーが未設定なら送らずにスタッフへ知らせる)。
### 質問2:「返却されたお客様に、その日の夜にお礼のメッセージを送りますか?送る場合、どんな内容を送りたいですか?」
- お礼メッセージの**文面のたたき台は用意していません**。依頼主の言葉(例:「ご利用のお礼と、またのご利用をお待ちしていますと伝えたい」「アンケートのURLも入れたい」)を聞いて、その内容で文面を作り、「この文面でいいですか?」と確認してから「文面」シートに入れる
- 送らない場合は「設定」シートの「お礼メッセージ」を `送らない` にしておく(あとから `送る` に変えられるように、仕組み自体は作っておく)
店舗名・電話番号・延滞料金の決まりなどは**質問せず**、「設定」シートに仮の値(`★ここを変更:店舗名` のような目立つ書き方)で入れておきます。
---
## 1. 作るもの
### 1-1. スプレッドシート(シート5枚)
**シート「長期レンタル」**(スタッフが入力する台帳。1行=1契約)
| 列 | 項目 | 入力する人 | 中身 |
|---|---|---|---|
| A | 登録日 | 自動 | 行を追加した日時 |
| B | お客様名 | スタッフ | |
| C | 携帯電話番号 | スタッフ | SMS 用。ハイフンありでもなしでもよい(GAS 側で整える) |
| D | メールアドレス | スタッフ | メール用 |
| E | 車両 | スタッフ | 車種・ナンバーなど |
| F | プラン | スタッフ | プルダウン:`1か月` / `1週間` / `その他` |
| G | 貸出日 | スタッフ | 日付 |
| H | 返却予定日 | スタッフ | 日付。**延長したらここを書き換える** |
| I | 返却済み | スタッフ | チェックボックス |
| J | 送信停止 | スタッフ | チェックボックス(電話で話がついた人など、もう送らなくていい人) |
| K | 延長の返事 | 自動 | `延長したい` / `予定どおり返却` / 空欄(3. を作った場合) |
| L | 予告を送った日時 | 自動 | |
| M | 前日のお知らせを送った日時 | 自動 | |
| N | お礼を送った日時 | 自動 | |
| O | 確認用キー | 自動 | 1行ごとのランダムな文字列(3. の確認リンク用) |
| P | メモ | スタッフ | |
- 自動の列は灰色にして、スタッフが触らないように保護する(警告表示で十分)
- **H(返却予定日)が書き換えられたら、K と L と M を空にする**(延長後の新しい返却日に合わせて、もう一度お知らせが送られるようにする)。`onEdit` で実装する
- 早く返却された場合も、I にチェックを入れれば以後のお知らせは止まる。行は消さない(記録として残す)
- 送信方法が SMS なのに電話番号が空、メールなのにメールアドレスが空の行は、送らずにスタッフの一覧の「要電話」に出す
**シート「設定」**(2列:項目名と値。依頼主があとで自由に変える場所)
| 項目 | 初期値 |
|---|---|
| 店舗名 | `★ここを変更:〇〇レンタカー △△店` |
| 店舗電話番号 | `★ここを変更:000-0000-0000` |
| 送信方法 | 0. で選んだもの(`メール` / `SMS` / `両方`) |
| 予告日数_1か月 | 7 |
| 予告日数_1週間 | 3 |
| 予告日数_その他 | 3 |
| 前日のお知らせ | `送る`(`送らない` にもできる) |
| 送信時刻 | 12 |
| お礼メッセージ | 0. の質問2の答え(`送る` / `送らない`) |
| お礼の送信時刻 | 19 |
| 延滞料金の文言 | `★ここを変更:延滞料金(1日あたり通常料金の◯倍)がかかります` |
| 延長の申し込み方法 | `お電話でご連絡ください` |
| スタッフ通知先メール | スクリプトを作った人のアドレス(`Session.getEffectiveUser().getEmail()`) |
| テストモード | **TRUE** |
- テストモードが TRUE の間は、**お客様には送らず、全部スタッフ通知先メールに送る**(件名に【テスト】を付ける。SMS の場合も、本文をスタッフ通知先にメールで送るだけにする)。最初は必ず TRUE で動かす
- 送信時刻・お礼の送信時刻を変えたら、トリガーも作り直す(`setup()` をもう一度実行すればよいようにしておく)
**シート「文面」**(種類ごとのメール件名・メール本文・SMS 本文)
種類は `予告` / `前日` / `お礼` の3つ(`お礼` は 0. の質問2で依頼主に聞いた内容で作る)。本文の中の `{お客様名}` `{返却予定日}` `{車両}` `{店舗名}` `{店舗電話番号}` `{延滞料金の文言}` `{延長の申し込み方法}` `{確認リンク}` を差し込む。依頼主が文面を自由に直せるようにする。初期の文面は、このファイルの最後にある「文面のたたき台」を入れる。`{確認リンク}` は 3. を作るまでは空文字にする。
**シート「送信ログ」**(自動で1行ずつ追記。消さない)
送信日時 / お客様名 / 種類 / 送信方法 / 宛先 / 結果(送信OK・失敗・SMS の配信結果)/ 本文
→ 「お知らせは◯月◯日に送っています」と言える証拠になる。
**シート「今週の返却予定」**(ホワイトボードの代わり)
「長期レンタル」から、返却済みでない行のうち **返却予定日が今日から8日以内** のものを、返却予定日の早い順に表示する(`FILTER` と `SORT` の数式でよい)。延長の返事(K 列)も一緒に見えるようにする。
### 1-2. GAS(スプレッドシートに紐づいたスクリプト)
1. **`dailyNotice()`** … 毎日「送信時刻」に自動で動く
- 返却済み・送信停止・返却予定日が空の行は飛ばす
- 今日から返却予定日までの日数を数える
- 日数がプランの予告日数**以下**で、かつ 2 日以上あり、L が空なら「予告」を送る(登録が遅れた人の取りこぼしを防ぐため「ちょうど」ではなく「以下」で判定する)
- 日数が 1 で、M が空で、「前日のお知らせ」が `送る` なら「前日」を送る
- 送ったら L / M に日時を書き、送信ログに追記する
- 最後に、スタッフへ「今日の一覧」メールを送る(4.)
2. **`eveningThanks()`** … 毎日「お礼の送信時刻」に自動で動く。「お礼メッセージ」が `送る` のときだけ、返却済みにチェックがあり N が空の行に「お礼」を送り、N に日時を書く。I のチェックが外されたら N は空にしない(同じ人に2回送らないため)
3. **`onEdit(e)`** … H 列が変わったら K・L・M を空にする。新しい行が入ったら A(登録日)と O(確認用キー)を入れる
4. **`setup()`** … 依頼主が1回だけ実行する。シートの準備(見出し・プルダウン・チェックボックス・保護・数式)と、`dailyNotice` と `eveningThanks` の時刻トリガーの作成をまとめて行う。**同じトリガーが二重にできないよう、作る前に古いものを消す**
5. **`sendNotice_(row, 種類)`** … 設定の「送信方法」を見て `sendMail_()` / `sendSms_()` を呼び分ける(`両方` なら両方)。テストモードの処理もここでまとめて行う
注意
- 日付の比較は日本時間で、時刻を切り捨てた「日付」どうしで行う(スクリプトのタイムゾーンを `Asia/Tokyo` にする)
- メールは `MailApp.sendEmail` を使い、送る前に `MailApp.getRemainingDailyQuota()` を確認する(無料の Gmail は1日100通、Google Workspace は1,500通まで)。足りなければ送らずにスタッフへ知らせる
- エラーで止まっても、その日の残りの行は処理を続ける(1行ずつ try / catch)
- 同じ行に同じ種類を2回送らない(L / M / N が埋まっていたら送らない)
---
## 2. 送る方法ごとの作り方
### 2-1. メール
- 追加の契約は不要。`MailApp.sendEmail` で送る
- 送信元は、スクリプトを作った Google アカウント。店舗用のアカウントで作ることをすすめる
### 2-2. SMS
GAS だけでは SMS は送れません。**SMS 配信サービスとの別契約(有料)が必要**です。
**契約するサービスを選ぶ(依頼主と一緒に)**
- API(プログラムから送る仕組み)に対応した SMS 配信サービスを選ぶ。国内向けの例:空電プッシュ、メディアSMS、KDDI メッセージキャスト。海外の Twilio など
- 比べる点:1通あたりの料金・月額や最低利用料・送信元に表示される名前・1通の文字数(70文字を超えると長文扱いで料金が変わることが多い)・**配信結果(届いた/届かなかった)を受け取れるか**・お客様からの返信を受け取れるか
- 料金や条件は各社のサイトで必ず最新のものを確認すること(ここに書いた会社名は候補で、おすすめではない)。依頼主が自分で決めて契約する
**作り方**
- 依頼主が契約したサービスの API の説明ページを読み、`sendSms_()` の中だけをそのサービスに合わせて書く(ほかの部分はサービスが変わっても触らなくてよいように分けておく)
- API キーは**スクリプトプロパティに保存し、コードに直接書かない**。保存のしかたを1つずつ案内する
- `sendSms_()` は `UrlFetchApp.fetch` で SMS サービスの API を呼ぶ。電話番号は国際形式(+81…)など、サービスの指定に合わせて整える
- 配信結果を受け取れるサービスなら、結果を送信ログの「結果」に書く。**届かなかった人はスタッフの一覧に「要電話」として出す**。送信方法が `SMS` でもメールアドレスがあれば、届かなかった人にはメールでも送る
- SMS 本文は短くする(このファイルの最後のたたき台を参照)。URL を入れると迷惑メッセージとして扱われやすいサービスもあるので、サービスの注意事項を確認する
### 「読んだかどうか」について(依頼主に必ず説明すること)
SMS にもメールにも、LINE のような「既読」を店側で確実に知る方法は**ありません**(SMS の開封表示は機種によって違い、配信サービスにも届かない)。代わりに次の2つで「確認できた人」を把握します。
1. **配信結果**:届いたか・届かなかったか(SMS サービスが対応していれば)
2. **確認リンク**(3.):お客様がリンクを押して「延長したい/予定どおり返却」を選んだら、その人は「確認済み」とみなす
---
## 3. 確認リンクと「延長の返事」(基本が動いてから、希望すれば)
- GAS を **ウェブアプリとして公開**し、`doGet(e)` で確認ページを出す
- 予告と前日のお知らせに `{確認リンク}`(ウェブアプリの URL + `?k=確認用キー`)を入れる
- 確認ページには、お客様名と返却予定日、ボタン2つ:**「延長したい」** / **「予定どおり返却する」**
- 押されたら K 列に書き、スタッフ通知先メールにすぐ知らせる(延長なら入金や手続きの案内をするため、返却なら次の予約を入れるため)
- 確認用キーが一致しない・返却済みの場合は「このリンクは使えません。お店にお電話ください」と出す
- ウェブアプリは「誰でもアクセス可(ログイン不要)」で公開するが、**ページに出すのはお客様名と返却予定日だけ**にし、電話番号やメールは出さない
---
## 4. スタッフへの「今日の一覧」メール
`dailyNotice()` の最後に、スタッフ通知先メールへ1通だけ送る。
- 今日お知らせを送った人(種類・送信方法つき)
- **要電話**:届かなかった人/宛先(電話番号・メール)が空で送れなかった人/前日のお知らせを送ったのに延長の返事がまだない人(3. を作った場合)
- **返却予定日を過ぎても返却済みになっていない人**(延滞の可能性)
- 延長の返事が来た人(延長したい/予定どおり返却)
- 該当がなければ「今日は対応が必要な人はいません」
---
## 5. 進め方
1. **基本を作る**:シートと GAS を作る → `setup()` を実行 → テストモードのまま、依頼主自身を「お客様」としてテスト用の行を2〜3行入れる(返却予定日を7日後・3日後・明日にする)→ `dailyNotice()` を手動で実行して、スタッフ通知先にテストのお知らせが届くか確かめる
2. うまくいったら、「設定」シートの ★ の項目を依頼主に書き換えてもらい、テストモードを FALSE にして本番開始
3. (希望すれば)3. の確認リンクを足す
4. (将来)予約サイトの返却処理と連携できるかを予約サイトの会社に確認。できれば「返却済み」チェックを自動にする
### GAS をシートに入れる方法
- `clasp`(GAS をパソコンから送るツール)が使えるなら使ってよい。その場合も、Google へのログインや「Apps Script API をオンにする」画面は依頼主本人が操作するので、どこを押すかを1つずつ案内する
- 使えない・難しそうなら、**スプレッドシートの「拡張機能 → Apps Script」を開いてもらい、コードを貼り付けてもらう**方法で案内する。貼るコードは1ファイルにまとめて出す
- 初回の実行時に Google から「権限を許可しますか」と聞かれる。「このアプリは確認されていません」と出たら「詳細 → (プロジェクト名)に移動」で進めてよいことを、理由とあわせて説明する(自分で作ったスクリプトなので)
### 加盟店に配るとき
- 完成したスプレッドシートを「テンプレート」として残し、加盟店ごとに**コピーして使う**(店舗ごとに別のファイル・別の送信元。SMS は加盟店ごとの契約か本部の契約かを依頼主が決める)
- コピーしたら、加盟店側で `setup()` を1回実行し、「設定」シートを書き換えるだけで動くようにしておく
- お客様の電話番号・メールが入るので、シートの共有は**その店舗のスタッフと本部だけ**にする
---
## 6. 文面のたたき台(「文面」シートの初期値)
※ `お礼` のたたき台はありません。0. の質問2で依頼主に聞いた内容で作ってください。
### 予告(メール)
件名:【{店舗名}】ご返却日のご案内({返却予定日})
{お客様名} 様
いつも{店舗名}をご利用いただき、ありがとうございます。
ご利用中のお車({車両})のご返却予定日は **{返却予定日}** です。
ご延長をご希望の場合は、{延長の申し込み方法}。
{確認リンク}
※ご返却予定日を過ぎた場合は、{延滞料金の文言}。あらかじめご了承ください。
ご不明な点は {店舗電話番号} までお気軽にお問い合わせください。
{店舗名}
### 前日(メール)
件名:【{店舗名}】明日はご返却日です({返却予定日})
{お客様名} 様
ご利用中のお車({車両})のご返却予定日は、**明日 {返却予定日}** です。
ご延長をご希望の場合は、本日中にご連絡ください。
{確認リンク}
※ご返却予定日を過ぎた場合は、{延滞料金の文言}。
{店舗名} {店舗電話番号}
### SMS(短く。70文字前後を目安)
- 予告:`{店舗名}です。お車のご返却日は{返却予定日}です。延長をご希望の方はご連絡ください。{店舗電話番号}`
- 前日:`{店舗名}です。明日{返却予定日}がご返却日です。延長はご連絡ください。過ぎると延滞料金がかかります。{店舗電話番号}`
- 確認リンクを入れる場合は、SMS サービスの文字数と URL の扱いを確認してから入れる
---
## 7. 依頼主があとから自分で調整できるようにしておくこと
- 文面:「文面」シート(メール・SMS とも。お礼の文面も)
- 送る方法(メール / SMS / 両方)・送る日(何日前)・前日のお知らせの有無・お礼メッセージの有無・送信時刻・店舗名などの差し込み内容:「設定」シート
- テストモード:TRUE に戻せば、いつでもお客様に送らずに試せる
- コードを触らずに変えられない要望が出たら、そのとき AI に頼めばよいと伝える(例:Google カレンダーにも返却予定を入れたい)
## 8. 完成したら依頼主に伝えること
- スタッフがやることは「契約したら1行書く」「延長したら返却予定日を書き換える」「返却されたらチェック」の3つだけ
- 毎日届く「今日の一覧」の **要電話** の人にだけ電話すればよい
- 「設定」シートの ★ の項目を書き換えて、テストモードを FALSE にすれば本番開始
- 7. の「自分で調整できるところ」の一覧
進めていて詰まったところがあれば、いつでも LINE でご相談ください。