キャンセルの連絡は、いつも出先に届く
「すみません、明日の講座、キャンセルでお願いします」
こういう連絡は、不思議と、家のPCの前にいるときには来ません。移動中の電車の中とか、買い物のレジ待ちとか、子どもを迎えに行く途中とか——手元にスマホしかないときに届きます。
この秘書には、キャンセル待ちの繰り上げがあります(育てる編①で見たとおりです)。キャンセルの操作をした瞬間に、列の先頭の人へ「お席のご用意ができました」のメールが飛ぶ。逆に言うと、わたしが操作するまで、その1席は誰のものでもないまま宙に浮いているということです。家に帰ってPCを開くのが夜の9時なら、キャンセル待ちの人がお知らせを受け取るのも夜の9時。連絡そのものは昼過ぎに来ていたのに、です。
スマホでスプレッドシートを開けばいい、と思うかもしれません。わたしも思いました。でも、やってみると分かります。小さい画面で目当ての行を探して、セルを選んで、メニューを呼び出して——ちゃんとできなくはないけれど、レジ待ちの列でやる作業ではありません。
今日は、これを片づけます。受付の管理画面を、ポケットに入れます。 そして、この回が「申込・予約 秘書」育てる編の、最終回です。
結果から言います = URLの末尾に「?page=admin」と足すだけ
先に結論から。核の回で一度貼ったコードのまま、管理画面はもう入っています。 コードの貼り直しも、公開ページのデプロイし直しも、しません——この約束は最終回も変わりません。
それどころか、今回は育てる編でいちばん徹底しています。①〜③で触ってきた『設定』のセルすら、今回は触りません。メニューも押しません——というのが基本の約束です(この後のつまずき帳で一度だけ押してみますが、それは「押さなくていい」と確かめるための一度です)。やることは、これだけです。
申込者に案内している受付ページのURL(/exec で終わるあのURL)の末尾に、?page=admin と自分で書き足して開く。
それだけで、同じURLの中に隠れていたもう1つの入り口が開いて、スマホの画面が管理画面に変わります。残席のメーター。申込の一覧。そして行ごとに「確定にする」「キャンセルにする」のボタン。核の回で「主催者本人だけが中を見られるもう1つの入り口を用意してあります」と予告した、あの扉です。
一度開いたら、スマホでブックマークしておいてください。 次からはワンタップです。
開いてみる = 残席メーターと、申込の一覧と、2つのボタン
実機の画面を、そのままお見せします。①〜③のテストを通ってきたわたしの『申込一覧』には、このとき6件の申込が貯まっていました。確定が4人、お断りが1人、キャンセルが1人——育てる編をぜんぶ通った、状態の見本市みたいな一覧です。
受付ページのURLに ?page=admin を付けて開くと——

上から順に、こう並んでいます。
- 残席メーター。 「定員 5人中 4人(確定+承認待ち)/残席 1」のように、いま席がどれだけ埋まっているかが、バーの長さで一目で分かります。核の回で書いた「残席は毎回数え直す」がここでも生きていて、このメーターも開くたびに申込一覧を数え直した結果です。
- 申込の一覧。 受付日時・お名前・人数・状態が1行ずつ。スプレッドシートの『申込一覧』と同じ中身が、スマホで読みやすい表になっています。
- 行ごとのボタン。 「確定にする」と「キャンセルにする」。それぞれ、シートのメニューでやっていた承認とキャンセル(繰り上げつき)の操作にあたります。
画面の上には、こう書いてあります。
このページは主催者専用です。ボタンの操作はシートのメニューと同じ処理を通ります。
この一文が、この管理画面の性格をぜんぶ言い表しています。新しい機能がここに増えたのではなく、いつものメニューの操作に、スマホから届く入り口がついた——そういうものです。
ボタンを押してみる = 出先からのキャンセルが、10秒で終わる
実際に押してみます。確定になっていた田中花子さん(架空のテスト名です)の行で、「キャンセルにする」。
まず、「キャンセルにする:よろしいですか?」と確認されます。スマホのボタンは押し間違えるものなので、この一拍はありがたい。OKすると数秒で、報告が返ってきました。
キャンセルにしました。キャンセル待ちの方はいません(残席2)。

この報告文、よく見てほしいのです。ただ「キャンセルにしました」ではなく、「キャンセル待ちの方はいません」まで教えてくれています。 つまりこのボタンは、キャンセル処理のあとに、ちゃんとキャンセル待ちの列の先頭を探しに行っている。育てる編①でメニューから見た、あの繰り上げの仕組み——列の先頭の人を確定に繰り上げて、お知らせのメールまで送るあの一連——と同じ本体が、このボタンの裏で動いています。二重に作ってあるのではなく、本当に同じ処理を通っている。だから、メニューでできることと食い違いません。今回は列に誰もいなかったので、「いません」と正直に報告して終わった、というわけです。
画面を開き直すと、田中さんの行は「キャンセル」に変わり、メーターは「5人中 3人/残席 2」に戻っていました。

そして、家のPCでスプレッドシートを開くと——『申込一覧』の田中さんの行も、ちゃんと「キャンセル」になっています。管理画面とシートは、同じ台帳を見ているので、ズレようがありません。

出先でキャンセルの連絡を受けて、ブックマークを開いて、ボタンを2回(本体と確認)。10秒です。宙に浮いていた1席が、その場で片づくようになりました。
この扉は、主催者にしか開かない
「待って。受付ページのURLは、申込者みんなに配っているのに?」——そう思った人は、正しい心配をしています。
このURL自体は、申込者に案内している公開のものです。誰かが末尾に ?page=admin と付けて開くことも、理屈の上ではあり得ます。でも、開いた先で待っているのは、こう書かれた1枚のカードだけです。
このページは主催者専用です。
申込の一覧も、残席メーターも、ボタンも、一切出てきません。このページは、開いた瞬間に「いま開いているのは誰か」と「このスプレッドシートの持ち主は誰か」を照合して、一致したときにだけ中身を見せる作りになっています。一致しなければ(誰なのか確認できない場合も含めて)、見せない側に倒れます。さらに、万一ボタンの処理だけを直接叩こうとしても、そちらの入り口にも同じ門番が立っていて、「この操作は主催者専用です。」と突き返します。
だから、URLを配っていても大丈夫——なのですが、この「本人にしか開かない」まわりで、わたしは実機ではっきりつまずいたことが1つと、正直に書いておきたい注意点が1つあります。最終回のつまずき帳は、その2本立てです。
つまずき帳(その1):メニューが教えてくれたURLが、幽霊だった
じつはこの秘書のメニューには、「管理ページのURLを表示」という、いかにも今回のための項目があります。押すと、管理ページのURLと案内文が表示される。親切です。わたしも最初、素直にそれをコピーして開きました。
結果は——
現在、ファイルを開くことができません。

主催者本人のわたしが、です。「主催者専用です」のカードですらなく、Googleの「ファイルがありません」画面。あとでAIと一緒に調べて分かったのですが、メニューが表示したURLは、わたしが公開ボタンを押して作った受付ページのURLとは別のIDを指していました。GASが内部で管理している、いわば幽霊の住所です。実体がないので、秘書のページに到達すらしていなかった。サーバ側の実行ログにも、アクセスの記録はゼロでした。
正解は、この記事の最初に書いたとおりです。申込者に案内している、あの本物の受付ページのURL(/exec で終わるもの)に、?page=admin を自分で付ける。 メニューが出すURLは使わず、末尾の「?page=admin」という呪文の綴りだけ、ありがたく覚えて帰ってください。
「コードを直せばいいのでは」と思うかもしれません。直せます。でも、直しません。育てる編の約束は「コードの貼り直しをしない」です。 実害は「メニューのこの項目のURLが当てにならない」だけで、手でURLを作れば管理ページは完全に動く。だからこの項目は、ご愛嬌として正直に書き残しておくことにしました。完璧ではない秘書と、約束を守って付き合う——このシリーズらしい落としどころだと思っています。
つまずき帳(その2):複数のGoogleアカウントを使っている人への注意
もうひとつ、正直に書いておきます。わたしが最終的に管理ページを開けたのは、シークレットウィンドウ(プライベートブラウズ)で、主催者のアカウントだけでログインした状態でした。ふだん使いのブラウザ(複数のGoogleアカウントを入れっぱなしのもの)でも同じように開けたかどうかは、実は確かめきれていません。そこは正直に書いておきます。
心当たりのある人は多いはずです。1台のブラウザに、Googleアカウントを複数入れていませんか? 仕事用と個人用、学校用と家庭用。わたしのブラウザもそうでした。この状態だと、Googleが「どのアカウントでこのページを開くか」を取り違えることがある、とよく言われます。もし管理ページを開いて反応がおかしいときは、まずこれを疑ってください。
対処はシンプルです。シークレットウィンドウを開いて、主催者のアカウントだけでログインしてから、管理ページを開く。 わたしはこれで、すんなり入れました。ふだん使いでは、管理ページ用に「主催者アカウントだけでログインしたブラウザ(またはプロファイル)」をひとつ決めておくのが楽だと思います。
正直にできないこと(最終回も、先に言っておきます)
- 「本人にしか開かない」の実機立証は、わたしの環境(Google Workspaceの独自ドメインのアカウント)でのものです。 個人の
@gmail.comのアカウントで同じ構成を組んだ場合、本人確認の情報がうまく取れず、主催者本人でも「主催者専用です」側に倒れる可能性があります(見せてはいけない人に見せる方向ではなく、見せていい本人にも見せない方向に倒れる、ということです)。その場合の逃げ道として、同じコードのまま「アクセスできるユーザー=自分のみ」の第2のデプロイを管理ページ専用に作る、という手が用意してあります——ただし、わたしの環境では第2デプロイなしで開けてしまったため、この逃げ道は実機では未検証です。そこは正直に書いておきます。それでも、たとえ管理ページが「主催者専用です」に弾かれてしまっても、シートのメニュー操作はこれまでどおり全部使えます。管理ページはあくまで「出先の追加の入り口」であって、無くても秘書は完成しています。 - 管理画面でできるのは「確定にする」「キャンセルにする」の2つだけです。 お断りの下書き、リマインダーの予約、初期化——それ以外の操作は、これまでどおりシートのメニューから。出先で要るものだけを、ポケットに入れてあります。
- 画面は、開いた瞬間の情報です。 自動では更新されません。操作のあとは自動で読み直されますが、しばらく開きっぱなしにした画面を信じずに、操作の前に開き直すくらいがちょうどいいです。
- 管理画面の表に、メールアドレスの列はありません。 これはわざとです。毎朝まとめやLINE通知と同じで、ポケットの中に個人情報を増やさない方針。アドレスが要る用事は、シートを開いたときに。
裏側のしくみ(ここは読み飛ばしてOK)
- 入り口は1つ、顔は5つ。 この秘書の公開ページは、開かれるたびに「?page=admin が付いているか」「締切は過ぎたか」「満席か」を順に確かめて、管理ページ・受付終了・満席・申込フォームを出し分けています。管理画面は、その分岐の1つとして最初から仕込まれていました。核の回の「開かれるたびに設定を読み直す」背骨が、そのまま管理画面の扉にもなっています。
- 門番は、名簿の照合です。 管理ページの本人確認は、「開いている人のメールアドレス」と「スプレッドシートのオーナーのメールアドレス」の一致だけを見ます。パスワードを増やさない代わりに、Googleへのログインそのものを鍵にしている、ということです。確認に失敗したときは、必ず「見せない」側に倒します。
- ボタンは、メニューと同じ本体を呼びます。 「確定にする」は承認の本体を、「キャンセルにする」は繰り上げつきキャンセルの本体を、それぞれメニューと共有しています。管理画面用に処理を作り直していないので、「メニューでは繰り上がるのに、スマホからだと繰り上がらない」というような食い違いが、仕組みとして起きません。キャンセルのボタンには、核の回で書いた「窓口は一度にひとり」のロープ(LockService)もちゃんと掛かっています。
- 重いメールの送信部は、外から呼べない場所にあります。 承認確定や繰り上げのメールを実際に送る処理は、公開ページの裏側から直接は呼び出せない非公開の作りにしてあり、正規の入り口はメニューと、本人確認つきの管理ページのボタンだけです。公開URLに管理画面を同居させても裏口にならないよう、最初のコードの時点で塞いであります。
シリーズの終わりに = 「完成しました」とは、最後まで言いません
基礎編の最終回に、わたしは「『受付システムが完成しました』とは、言いません」と書きました。核の回で、それは謙遜ではなく予告だったと種明かしをして、この秘書を雇いました。そして育てる編で、最初に貼った1本のコードから、道具を1つずつ開けてきました。
- 核:定員と締切をセルに書くだけで、満席の瞬間に受付ページが自分から閉まる
- 育てる編①:満席のあとに列を作る。キャンセルが出たら、先頭の人が自動で繰り上がる
- 育てる編②:申込と確定のあいだに、人の判断を挟む。お断りは下書きまで、送信は人の手で
- 育てる編③:前日リマインダーと毎朝まとめを、メニューから予約する
- 育てる編④:管理画面をポケットに入れる(この記事)
約束は、最後まで守られました。核の回に一度貼ったきり、コードの貼り直しはゼロ。公開ページのデプロイし直しもゼロ。 申込者に案内したURLは、初日のまま一度も変わっていません。変わったのは、設定のセルと、押すメニューと、今日足したURLの末尾の呪文だけです。
それでも、「完成しました」とは言いません。キャンセルの連絡を受け取って手を動かすのは、いまも人です。お断りの送信ボタンを押すのも、税や規約のような「正しさ」を最後に確かめるのも、人。この秘書は完成したのではなくて、わたしの受付の手つきに合うところまで、育て終わった——いまはそう言うのが、いちばん正直だと思います。
コードが書けなくても、AIに任せて、ここまで来られます。受付を「受け取る」から「締める」まで、そして管理画面をポケットに入れるところまで。ここまで手を動かせたあなたの受付も、もう、あなたの手つきに合わせて育てられます。
※この記事の操作はすべて無料枠の範囲で行っています。画面のお名前・メールアドレス・各種ID/URLは、マスクまたは架空のサンプルに差し替えています。画面の表示や許可画面の文言は時期や環境により変わることがあるため、最新の内容はご自身の環境でご確認ください。コードは、一行も書いていません。
#AI×GAS #応用編その4 #申込予約 #管理ページ #スマホ #非エンジニア #つまずき帳 #育てる編
タイトル案(3つ)
- 出先のスマホが、そのまま受付の管理画面になる|申込・予約 秘書【育てる編④・最終回】
- 受付ページのURLに「?page=admin」と足すだけ|申込・予約 秘書【育てる編④・最終回】
- キャンセルの連絡に、帰宅を待たずに答えられる|申込・予約 秘書【育てる編④・最終回】


コメント