満席画面は、うれしい。でも、扉の前の人をそのまま帰している
核の回で、受付ページは「満席になった瞬間、自分から閉まる」ようになりました。定員オーバーの心配も、夜中の閉じ忘れもなくなった。あれは間違いなく前進でした。
でも、あの満席画面を裏から見ると、こうも言えます。満席のあとに来てくれた人を、そのまま帰している、と。
「満席となりました」のカードを見た人の中には、「キャンセルが出たら、ぜひ入りたいのに」という人がいます。実際、募集をやったことのある人なら知っているはずです。開催が近づくと、ぽつぽつとキャンセルは出るものです。そのとき、席をあきらめて帰ってしまった人の連絡先は、手元にありません。「空きが出たら教えてもらえますか?」とメールをくれた律儀な人のことは、覚えておかないといけない。誰が最初に言ってくれたんだっけ、と受信箱を掘り返して、順番を間違えないように気をつかって、夜に「お席が空きました」の連絡を書く——キャンセル待ちの管理は、満席のうれしさと引き換えに始まる、けっこう神経を使う仕事です。
今回は、この列の管理を秘書に渡します。満席のあとの申込が「キャンセル待ち」として静かに列に並び、キャンセルが出たら、列の先頭の人が自動で繰り上がって、お知らせのメールが飛ぶところまで。
先に、約束の確認から = 今日触るのは、セル1つとメニュー1つだけ
育てる編の約束を、毎回冒頭で確かめます。コードは、核の回で貼ったもののまま。今日も貼り直しません。公開ページのデプロイし直し(再デプロイ)もしません。 申込者に案内しているURLは、そのままです。
今日やることは、この2つだけです。
- 『設定』シートの【キャンセル待ち(ON・OFF)】のセルを、
ONに書き換える - キャンセルの連絡が来たら、メニューの「選択行をキャンセルにする(繰り上げつき)」を押す
列を作る仕組みも、繰り上げの判定も、お知らせメールの文面も、ぜんぶ核の回で貼ったコードの中に、最初から入っています。今日はそのスイッチを入れるだけ。そして今回も、わたしはコードを一行も書いていません。
① 列を作る = 『設定』の【キャンセル待ち】をONにする
『設定』シートを開いて、【キャンセル待ち(ON・OFF)】のB列を OFF から ON に書き換えます。やることは、本当にこれだけです。保存ボタンもありません(スプレッドシートは書いた瞬間に保存されます)。

わたしのテスト用シートは、核の回の実機テストのまま、定員2に対して2件の「確定」=満席の状態です。この状態でセルをONにして、スマホで受付ページを開き直すと——満席画面ではなく、フォームが戻ってきました。ただし、いつものフォームと少し違います。イベント案内のすぐ下に、オレンジ色(琥珀色)の注記が出ています。
現在満席です。キャンセル待ちとして受け付けます。
お席が空きましたらメールでお知らせします。

ここが、この秘書の律儀なところだと思います。満席なのにフォームを開けるなら、「いま申し込んでも席の確約ではない」ことを、入力の前に言っておくべきです。申し込んで、完了画面まで進んで、届いたメールで初めて「実はキャンセル待ちでした」と知らされるのでは、順番が逆です。だから注記は、いちばん最初に、目立つ色で出ます。
そのまま、3人目——佐藤三郎さん(テスト用の架空名です)として申し込んでみます。「申し込む」を押すと「送信中…」に変わり、出てきた完了画面は、いつもの「受け付けました」ではありませんでした。
キャンセル待ちで受け付けました
現在満席のため、キャンセル待ちとして受け付けました。
お席が空きましたら、メールでお知らせします。

受信箱に届いたメールも、確認メールとは別の顔をしています。件名は「【順番待ちのご案内】テスト講座 はただいま満席です」。本文には「ただいま満席のため、キャンセル待ちとして受け付けました。」「お席が空きましたら、お申し込みの順番にメールでお知らせします。」とあり、申込内容の控えPDFもいつもどおり添付されています。控えを開くと、受付区分の欄が「キャンセル待ち」になっていました。

台帳の『申込一覧』を見ると、佐藤さんの行が増えていて、状態の列は「キャンセル待ち」。これで、列ができました。列の並び順は、台帳の行の順=申し込んでくれた順。 別のシートも、番号の管理も要りません。台帳がそのまま、列です。
② キャンセルが出たら = メニューの「選択行をキャンセルにする(繰り上げつき)」
さて、本番はここからです。確定していた山田太郎さん(架空名)から「行けなくなりました」の連絡が来た、という場面をやってみます。
やり方は、受発注の育てる編と同じ「行を選んでメニューを押すだけ」です。
- 『申込一覧』で、山田さんの行を選びます(その行のどこかのセルをクリックすればOK)。
- メニュー「申込・予約秘書」→「選択行をキャンセルにする(繰り上げつき)」を押します。
数秒後、ダイアログが出ました。出てきた文面を、そのまま載せます。
キャンセルにしました。キャンセル待ち先頭の 佐藤 三郎 さん(1人)を「確定」に繰り上げました(繰り上げメール送信済み)。

ボタン1回で、3つのことが終わっています。山田さんをキャンセルにする。空いた席に、列の先頭の佐藤さんを「確定」に繰り上げる。そして、繰り上げのお知らせメールを送る。 誰を繰り上げるかを考える仕事も、お知らせを書く仕事も、発生しませんでした。
佐藤さんの受信箱には、こんなメールが届いていました。件名は「【お席のご用意ができました】テスト講座 のお申し込みが確定しました」。本文には「キャンセル待ちでお待ちいただいていたお申し込みに、お席のご用意ができました。」「お申し込みは「確定」となりました。」とあり、開催日時の案内と、「ご都合が変わった場合は、このメールへの返信でお知らせください」の一文まで添えられています。
台帳はどうなったか。山田さんの行は状態「キャンセル」、佐藤さんの行は「確定」に変わり、そして佐藤さんの行の「通知記録」の列(H列)に、「繰り上げ済」の札が付いていました。この札が「お知らせはもう送った」という秘書の覚え書きで、同じ人に繰り上げメールが二重に飛ぶことを防いでいます。

秘書は「先頭を追い越しません」= 繰り上げの線引き
この繰り上げには、はっきりした規約がひとつあります。先頭厳守です。
繰り上がるのは、いつでも列の先頭(いちばん早く申し込んでくれた人)だけ。そして、先頭の人の申込人数が空いた席に収まるときだけ、繰り上げます。たとえば、席が1つ空いたのに、先頭が「2人で参加」の申込だったら——秘書は、繰り上げません。後ろに「1人参加」の人が並んでいてもです。そのときは、こう報告する設計になっています(この組み合わせ自体は、まだ実機では確認していません)。「キャンセル待ち先頭の方は2人での申込のため、残席1では足りず、繰り上げていません(先頭を追い越しません)」。
追い越して席を埋めたほうが、席の稼働だけを見れば「効率的」かもしれません。でも、先に並んだ人を後回しにするかどうかは、募集の信用に関わる判断です。「もう1つキャンセルが出るまで先頭を待たせるか」「事情を説明して後ろの人を先に入れるか」——それを決めるのは、主催者であるあなたの仕事として残す。秘書が自動でやるのは、誰が見ても公平な「先頭からの繰り上げ」だけ。 判断の要る場面では、正直に報告して手を止める。この線引きは、わたしはとても好きです。
裏側のしくみ(ここは読み飛ばしてOK)
ここは、仕組みに興味がある人だけ、のぞいてください。読み飛ばしても、列も繰り上げもちゃんと動きます。
- キャンセルと繰り上げは、あの「窓口のロープ」の内側でやっています。 核の回で、申込の窓口には「一度にひとりずつ」のロープ(LockService)が張ってある、と書きました。じつはメニューのキャンセル操作も、同じロープの内側で動きます。なぜか。あなたがキャンセル処理をしている真っ最中に、スマホから新しい申込が飛び込んでくるかもしれないからです。もしキャンセルで空いた一瞬の席を、新しい申込と繰り上げ処理が同時につかんだら、席の二重売りになります。同じロープに並ばせておけば、それは起きません。「キャンセルにする→数え直す→先頭を繰り上げる」がひとかたまりで、誰にも割り込まれないようになっています。
- ここでも、残席は毎回数え直しています。 「キャンセルが出たから残席プラス1」のような足し算引き算はせず、キャンセルを書き込んだあとに、台帳全体を最初から数え直してから繰り上げを判定します。カウンタを持たない・台帳が唯一の真実、という核の回からの主義は、繰り上げでも同じです。
- 「繰り上げ済」の札は、メールが送れたときだけ貼られます。 もし繰り上げメールの送信に失敗すると、ダイアログは「メールは送れていません。H列を確認してください」と報告する設計です(この失敗パターン自体は、まだ実機では再現していません)。札が無い=まだ知らせていない、が台帳を見れば分かるので、その行の宛先には手作業でご連絡を。「送ったつもりで送れていない」が、いちばん怖い事故なので、成功の記録だけを残す作りです。
- 列に並んでいる人は、席を使いません。 残席の勘定で数えられるのは「確定」と「承認待ち」だけ。「キャンセル待ち」の行が何十行あっても、残席は減りません。だから、列がどれだけ長くなっても、受付の勘定は狂いません。
正直にできないこと(先に言っておきます)
このブログのやり方として、できないことは先に正直に言います。
- キャンセルの連絡を受け取るのは、人です。 申込者が自分で操作するキャンセルページは、作っていません。「行けなくなりました」はメールなどで受けて、あなたが行を選んでメニューを押す。連絡を受けて手を動かすところは、人の仕事として残してあります。
- 先頭の人数が収まらないときは、自動では繰り上げません。 上に書いたとおりです。「後ろの人を先に入れる」ような判断は、秘書は代行しません。
- 繰り上げが動くのは、キャンセル操作のときだけです。 この先の育てる編②に「お断り」という操作が出てきますが、お断りで席が空いても、自動繰り上げはしません。お断りは人の判断の場面なので、次の人を繰り上げるかどうかも人が決める、という線引きです。
- 繰り上げメールの返事までは、追いかけません。 「お席のご用意ができました」に返事がない・じつはもう都合が悪くなっていた、という場合の再繰り上げは、あなたがその行をキャンセル操作すれば、また先頭から順に動きます。連絡の様子を見て判断するのは、人の仕事です。
——満席のあとの列は、人の期待が並ぶ場所です。だからこそ、機械が勝手に順番を入れ替えないこと・送れていないのに送ったことにしないことを、仕組みで守ってあります。
次回予告:育てる編② = 申込と確定のあいだに、人の判断を挟む
今回で、満席は「終わり」ではなく「列の始まり」になりました。閉まった扉の前に来てくれた人を、帰さずに済むようになりました。
次回は、受付のもうひとつの顔——承認制です。『設定』の【承認制】をONにするだけで、申込はいったん「仮受付」で止まり、あなたの承認をもって確定になります。参加条件のある講座や、顔ぶれを見て決めたい少人数の会のための回です。そして、お断りの連絡は——この秘書は自動では送りません。どこまでやって、どこから人に残すのか。その線引きも、次回くわしく。
もちろん、コードは貼り直しません。承認の仕組みも、もうあなたのシートの中に入っています。今回セルを1つONにできたあなたなら、次もセル1つです。
※この記事の操作はすべて無料枠の範囲で行っています。画面のお名前・メールアドレス・各種ID/URLは、マスクまたは架空のサンプルに差し替えています。画面の表示や文言は時期や環境により変わることがあるため、最新の内容はご自身の環境でご確認ください。コードは、一行も書いていません。
#AI×GAS #応用編その4 #申込予約 #キャンセル待ち #繰り上げ #育てる編 #非エンジニア
タイトル案(3つ)
- 満席のあとに、列を作る|申込・予約 秘書【育てる編①】
- キャンセルが出た夜、誰を繰り上げるかで悩まない|申込・予約 秘書【育てる編①】
- 「空きが出たら教えて」に、応えられる受付になる|申込・予約 秘書【育てる編①】



コメント