GASだけで“自分専用の申込ページ(Webアプリ)”を作る|もう、借り物のフォームじゃない【基礎編】

基礎編 受付ページWebアプリ アイキャッチ:URLひとつで、自分の受付ページ(ひとつのURLに複数の申込者がつながる) つまずき帳

申込を集めるたび、いつも誰かの土俵を借りていた

学校で講座やイベントの申込を集めるとき、わたしはずっとGoogleフォームを使っていました。手軽だし、無料だし、それで決定的に困っていたわけじゃない。ないんですけど——使うたびに、心のどこかで小さく引っかかっていたんです。

まず、見た目。あの紫の帯と、誰が作っても同じになる画面。どれだけ文面を丁寧に整えても、「ああ、Googleフォームね」と一目で分かってしまう。自分が主催する講座の入口が、いつも借り物の顔をしている感じ。

それから、送ったあとに出る「回答を記録しました」という、そっけない一行。せっかく申し込んでくれた人に、最初にかける言葉がこれでいいのかな、と。文言も雰囲気も、こちらでは決められない。

別に大した話じゃありません。でも、「自分の窓口」を持ちたいな、という気持ちは、ずっとくすぶっていました。とはいえ、ホームページを作るほどの技術はないし、有料の受付サービスを契約するほど大げさな話でもない。だから、ずっとフォームのままでした。

結果から言います = URLを開けば誰でも使える「自分の画面」が、コードなしでできた

今回できたことを、先に言ってしまいます。

ブラウザでURLを開くと、自分でデザインした申込ページがそのまま表示される。 お名前・メールアドレス・参加人数・ひとこと(任意)を書いて「申し込む」を押すと、画面が切り替わって「受け付けました」と表示される。そして送られた内容は、わたしのスプレッドシートに、受付日時つきで1行ずつ自動でたまっていく。

その受付ページのURLを、案内のメールやメッセージに貼るだけ。受け取った人は、リンクを開いて記入して送るだけ。Googleアカウントを持っていなくても、ログインしなくても使えます。

いちばん驚いたのは、これがGoogleフォームでも、外部の有料サービスでもなく、GAS(Google Apps Script)だけで作れたということでした。「GASは、シートやメールを自動で動かす道具」だと思っていたのに、URLを開けば誰でも使える“自分の画面”——いわゆるWebアプリ——まで作れてしまう。これが、今回いちばん開けてうれしかった引き出しです。

そして毎回のことですが、わたしはコードを一行も書いていません。 書いたのはAIで、わたしがやったのは、貼って、公開設定をして、一度だけ許可しただけ。

今日の一点:GASで「自分の画面(Webアプリ)」を作る

このブログでは「GASでできること」を、引き出しを一つずつ開けるように紹介してきました。①集める ②知らせる ③書類 ④AI ⑤定期 ⑥つなぐ——そして今日開けるのが、最後の引き出し、⑦「自分の画面(Webアプリ)」です。

これまでの回は、裏側で静かに動く自動化が多かった。今日のは、ちょっと毛色がちがいます。今日できるようになるのは、たった一つ。URLを開くと、誰でも使える“画面”そのものが現れる。 これまで「スプレッドシートやGmailを動かす道具」だと思っていたGASが、じつは「ブラウザで開けるページ」も出力できる。この一点だけ、今日は受け取ってください。

仕組みはとてもシンプルでした。今回AIが書いてくれたコードは、ファイル1つだけ。中でやっていることは、たった二つです。

  • ページを開いたとき、申込フォームの画面を表示するdoGet という部分が担当)
  • 送信ボタンが押されたとき、内容をシートに1行記録するsaveEntry という部分が担当)

画面のデザイン(見出しや入力欄、ボタンの見た目まで)も、そのコードの中に一緒に入っています。だから管理するファイルは1つきり。シンプルなほど、わたしのような人間にはありがたいんです。

同じものを作る:AIに渡す文章(コードは書きません)

例によって、自分でコードは書きません。ChatGPTやGeminiのような対話AIに、次の文章をそのまま頼むだけです。

——中身は読まなくて大丈夫。まるごとコピーして、貼るだけです。

Google Apps Script で、講座・イベントの「申込受付ページ(Webアプリ)」を作ってください。コードは全部あなたが書いてください。わたしはコードが読めない前提でお願いします。

1. スプレッドシートに紐づくスクリプトとして作ること(このシートに申込を記録します)。
2. ブラウザでURLを開くと、申込フォームの画面が表示されるようにする。集める項目は「お名前」「メールアドレス」「参加人数(数字・初期値1)」「ひとこと(任意)」の4つ。スマホでも読みやすいデザインにしてください。
3. 「申し込む」ボタンを押したら、その内容を、このスプレッドシートの『申込一覧』というシートに1行追記する。記録する列は「受付日時・お名前・メール・参加人数・ひとこと」。『申込一覧』シートが無ければ、見出し付きで自動で作ってください。
4. 送信が終わったら、同じ画面を「受け付けました」というお礼の表示に切り替える。
5. 画面のHTMLは、別ファイルにせず、コードと同じ1ファイルの中にまとめてください(管理しやすいように)。元のデータは消さない・上書きしない、毎回1行ずつ足すだけにしてください。
6. これをウェブアプリとして公開する手順(デプロイ=「実行するユーザー=自分」「アクセスできるユーザー=全員」、初回の許可、発行されたURLの開き方)も、コードが読めない人向けに一つずつ教えてください。

このとおりに頼めば、AIがコード(実体は、とても短い1ファイルです)と手順をひとそろい返してくれます。あとは下のステップを、言われたとおりになぞるだけ。順番に見ていきます。

Apps Scriptエディタに、AIが書いたコードを貼り付けた状態
Apps Scriptエディタに、AIが書いたコードを貼り付けた状態

作り方の体験:貼って、公開して、許可するだけ

1. コードを貼る

Googleスプレッドシートを1枚作って(わたしは「講座申込」という名前にしました)、メニューの「拡張機能」→「Apps Script」を開きます。まっさらなエディタが出てくるので、AIが書いたコードをまるごと貼り付けて保存。これだけ。中身は読まなくて大丈夫です。

2. 公開(デプロイ)する

ここが、今回はじめて出てくる操作です。エディタ右上の「デプロイ」から「新しいデプロイ」を選び、種類を「ウェブアプリ」にします。設定で大事なのは2つだけ。

  • 次のユーザーとして実行:自分
  • アクセスできるユーザー:全員

この「全員」が、今回のキモです。これにしておくと、Googleアカウントを持っていない人・ログインしていない人でも、URLを開けば使えるようになります。講座に申し込む人にアカウントを要求しないための設定です。

デプロイ設定の画面。種類=ウェブアプリ、実行=自分
デプロイ設定の画面。種類=ウェブアプリ、実行=自分
「アクセスできるユーザー=全員」を選んだ状態
「アクセスできるユーザー=全員」を選んだ状態

3. 初回だけ「許可」する

デプロイの途中で、一度だけGoogleの許可画面が出ます。これは「このスクリプトが、あなたのシートに書き込んでいいですか?」という確認で、本人が一度承認すればおしまい。次からは出ません。怖い操作ではなく、自分の作ったものに自分でOKを出すだけです。

初回だけ出るアクセス承認(OAuth)の画面。アカウント名はマスク
初回だけ出るアクセス承認(OAuth)の画面。アカウント名はマスク

4. URLを開いてテストする

許可まで終わると、.../exec で終わる長いURLが発行されます。これが、あなたの受付ページのアドレス。スマホで開くと、ちゃんと自分でデザインした申込フォームが表示されました。

発行された /exec のURL
発行された /exec のURL
スマホで /exec のURLを開き、申込フォームが表示された画面
スマホで /exec のURLを開き、申込フォームが表示された画面

試しに、テスト申込を送ってみます。お名前・メール・人数を入れて「申し込む」。

お名前・メール・参加人数を入力した状態
お名前・メール・参加人数を入力した状態

ボタンを押すと画面が切り替わって——「✓ 受け付けました」。

送信後に表示される「受け付けました」のお礼画面
送信後に表示される「受け付けました」のお礼画面

そしてシート側を見にいくと、『申込一覧』に受付日時つきで1行、ちゃんと記録されていました。フォームより自分らしい入口で、名簿は自動でたまる。これがやりたかったことです。

スプレッドシートの『申込一覧』に申込が1行記録された様子(シートIDはマスク)
スプレッドシートの『申込一覧』に申込が1行記録された様子(シートIDはマスク)

これで完成です。あとは、このURLを参加してほしい人に渡すだけ。「貼って、公開して、一度許可しただけ」——これが、このブログのいつものやり方です。

つまずき帳:スマホで「ファイルを開くことができません」が出た

正直に、ここでつまずいた話をします。

公開できたURLを、わたしが自分のスマホで普通に開いたら、フォームではなく、Googleドライブの「ファイルを開くことができません」というエラーが出たんです。「え、ちゃんと作れたはずなのに壊れてる?」と一瞬、血の気が引きました。

スマホで普通に開いたときに出た、Googleドライブの「ファイルを開くことができません」エラー
スマホで普通に開いたときに出た、Googleドライブの「ファイルを開くことができません」エラー

でも、これはアプリの故障ではありませんでした。原因は、スマホで複数のGoogleアカウントに同時ログインしていたこと。ブラウザが「どのアカウントの文脈で開くか」を取り違えて、本人以外の立場で開こうとしてしまう——よくある現象だそうです。

解決はあっけなくて、プライベートブラウズ(シークレット/匿名モード)で同じURLを開いたら、普通に表示されました。 プライベートモードは「どのアカウントにもログインしていない状態」なので、まさに外部の申込者と同じ条件。念のため、ログインしていない状態でこのページがちゃんと開くかも、別途(匿名でのアクセス)で確かめました。きちんと表示される。アプリ自体は最初から正常で、見えなくしていたのは“自分のログイン状態”のほうだった、というオチでした。

ここから分かった配布のコツ。人に受付ページを案内するときは、「ログインは要りません。もしエラーが出たら、プライベートモード(シークレット)で開いてみてください」と一言そえると親切です。作った本人がいちばん引っかかりやすくて、外部の人はむしろすんなり開ける、というのが面白いところでした。

正直に、これはできません

驚きの大きい回ほど、できないことも盛らずに置いておきます。これを分かったうえで使えば、がっかりしません。

  • 大規模・商用サービスの代わりにはなりません。 数十人〜数百人くらいの申込なら快適ですが、何千人が一斉に殺到するようなサービス向きではありません。GASの無料枠には上限があり(1回の実行は6分まで、同時に動かせる数の上限など。正確な値はアカウントの種類で変わります)、そこを超える規模は想定外です。
  • 見た目は自由でも、完全に“自分のサイト”ではありません。 デザインは好きにできるものの、ページは安全のための枠(サンドボックスiframe)の中に表示され、上部に「このアプリは Apps Script で作成されました」というバナーが出ます。表示も、ほんの少しもたつくことがあります。
  • 誰が申し込んだかは、記入頼みです。 ログイン不要にしている=匿名なので、フォームに書かれたお名前・メールがそのまま情報源になります。確実に本人確認したいなら「アクセス=全員」をやめてログイン必須にもできますが、その場合はGoogleアカウントを持っている人限定になります。一長一短です。
  • 決済・送金はできません。 ページの中でお金のやり取りはできません。参加費が要るなら、外部の決済サービスへのリンクを貼る形になります。
  • 動き続ける保証はなく、直すには再公開が必要です。 24時間の稼働保証はありません。コードを直したときは、もう一度デプロイ(再公開)しないと反映されない点も覚えておいてください。

ひと言でまとめると——Eventbriteのような本格的な申込サービスの代わりにはなりません。でも、「自分の講座の申込を受けて、名簿を作って、お礼を表示する」だけなら、これで完璧でした。 身の丈に合った道具、という感じです。借り物ではない、自分のページ。その安心は、思っていたより大きいものでした。

次の引き出しへ

今日は⑦「自分の画面(Webアプリ)」を、いちばんシンプルなかたち——URLを開けば誰でも使える申込ページ——で開けてみました。GASは、裏方の自動化だけじゃなく、こうして“見える画面”まで出せる。この感触が伝われば、今日はじゅうぶんです。

そして、このブログの引き出しは横に並んでいるので、今日の受付ページに別の引き出しを組み合わせることもできます。たとえば、申し込んだ人に自動で確認メールを返すなら、それは②「知らせる」の引き出し。申込内容をPDFの控えにして渡すなら、③「書類」の引き出し。どれも、今日と同じ「AIに頼んで、貼るだけ」で届く範囲です。今日の受付ページを練習台にして、次回もまた、引き出しをもう一つ取り出して開けてみます。


*※この記事の操作はすべて無料枠の範囲で行っています。画面の名前・アカウント名・URL・シートの内容は、マスクまたは架空のサンプルに差し替えています。料金や仕様は時期・アカウントの種類により変わることがあるため、最新の表示はご自身の環境でご確認ください。*

#定時で帰る開発部 #自動化レシピ #基礎編 #GAS #Webアプリ #つまずき帳

コメント

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