「そろそろ誰か、フォームに答えてくれたかな」
——そう思って、スプレッドシートを開く。来ていない。少し経って、また開く。やっぱり来ていない。
この、何度もタブを開いては閉じる感じ。地味に、しんどいですよね。
はじめまして。「定時で帰る開発部」の、最初の実践レシピです。部員はわたしとAIだけ。わたしはプログラミングが正直サッパリの非エンジニアで、コードは1行も書けません。書くのはAI。わたしは、それを貼って、ボタンを押すだけ。今日はそのやり方で、この「フォーム、何度も見にいく問題」をひとつ片付けます。
フォームの確認、地味にしんどい
Googleフォームを使っていると、こんな時間が積み重なります。
「そろそろ来たかな」と表を開く。来ていない。少し経って、また開く。べつに難しい作業じゃない。ただ、何度も見にいくこの感じが、地味にしんどい。
しかも、ずっと張りついているわけにもいかないから、たまに見落とす。「あ、3日前に来てたんだ…」と気づいて、すっと血の気が引く。相手はとっくに送ってくれていたのに、こっちが気づいていなかった。この「待たせてしまった」感じが、地味にいちばん効くんですよね。
——これ、少し前までのわたしです。「自分はITが苦手だから」と決めつけて、フォームのたびに何度もタブを開いては閉じて、を繰り返していました。
創刊号で、いきなり完成形をお見せしました。フォームに回答が来た瞬間、整った通知メールが勝手に届く、あれです。「作り方も残します」と約束したので、今日はその手順を、このとおりやれば再現できる形で置いていきます。所要10分くらい。難しい言葉は出てきません。
完成形:回答の“中身ごと”メール通知が届く
ゴールはこれです。フォームに誰かが回答すると、こんなメールが自動で届きます。

回答が来たことも、中身も、これまでで何件目かも、メールひとつで分かります。もうスプレッドシートを見張らなくていい。ほっといても、勝手に通知が来て終わっている状態です。
念のため、先に言っておきます。わたしはコードを1行も書いていません。 AIに書いてもらった文章を、決められた場所に貼って、最初に一度だけ「許可」しただけです。
ひとつだけ、正直に。「ただ通知が欲しいだけ」なら、実はGoogleフォーム標準のメール通知でも足ります。ただし届くのは「新しい回答があります」というお知らせと確認リンクが中心で、回答の中身そのものは基本的にメールに入りません(中身はフォームを開いて見る形です)。だからこの記事は「通知が万能です」とは言いません。お伝えしたい価値はふたつ。(1) 中身まで、自分の好きな形で届けられること。(2) これが「AIに書かせて、貼って、動かす」という自動化の“第一歩”になること——こっちが本題です。
手順:フォームの回答を自動でメール通知する
用意するのはGoogleアカウントだけ。では、いきます。
1. テスト用のGoogleフォームを作る
いきなり本番で試すと不安なので、まずは練習用を1つ。本番の個人情報は入れず、ダミー(お名前=テストたろう、など)でいきましょう。
2. 回答先のスプレッドシートにつなぐ
フォーム編集画面の「回答」タブ →「スプレッドシートにリンク」(緑のアイコン)。これで、回答が貯まる表ができます。
3. その表で「拡張機能 > Apps Script」を開く
いま作ったスプレッドシートのメニューから、拡張機能 → Apps Script。新しいタブで、コードを書く画面が開きます。(“Apps Script”が、創刊号で言った「小さな自動係さんへの指示書」を置く場所です。)
4. コードを貼って、保存する
次に出てくるコードを全部コピーして、開いた画面に貼り付け、フロッピーのアイコン(💾)を押して保存します(Cmd + S でもOK)。貼り方のコツは、後の「つまずき②」で必ず触れます。
5. 「初期設定」を選んで、一度だけ実行する
画面の上のほうにある選択メニュー(ドロップダウン)で 初期設定 を選び、その右の ▶ 実行ボタンを押します。これは「フォームに回答が来たら自動で動いてね」というスイッチを入れる作業で、最初の一度だけです。
(このとき初めて「承認」の画面が出ます。つまずきやすいポイントなので、記事の後半で画像つきで一歩ずつご案内します。)
6. フォームにテスト回答してみる → 通知メールが届けば完成!
以降は、何もしなくてずっと自動です。
貼り付けるコード
// === 設定(ここだけ変えればOK)===
const 通知先メール = ''; // 空なら自分のアドレスに届きます
const 通知の件名 = '【新着】フォーム回答が届きました';
// フォーム送信時に“自動で”動く本体
function onFormSubmit(e) {
const sheet = e.range.getSheet();
const headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
const values = e.values; // 今回の回答(1行ぶん)
const total = sheet.getLastRow() - 1; // 見出しを除いた件数(=通算の回答数)
const lines = headers.map((h, i) => `${h}:${values[i] || ''}`);
const body = `新しい回答が届きました(これで ${total} 件目)。\n\n` + lines.join('\n');
const to = 通知先メール || Session.getActiveUser().getEmail();
MailApp.sendEmail(to, `${通知の件名}(${total}件目)`, body);
}
// 最初に1回だけ実行:自動発火をセット
function 初期設定() {
ScriptApp.getProjectTriggers()
.filter(t => t.getHandlerFunction() === 'onFormSubmit')
.forEach(t => ScriptApp.deleteTrigger(t)); // 二重登録を防ぐ
ScriptApp.newTrigger('onFormSubmit')
.forSpreadsheet(SpreadsheetApp.getActive())
.onFormSubmit()
.create();
SpreadsheetApp.getActive().toast('セットアップ完了!フォームに回答すると通知が届きます。');
}
このコードは、AIに「Googleフォームの回答が来たら、内容を整えて自分にメール通知するものを作って」とお願いすれば、書いてくれます。中身が分からなくて大丈夫。このまま貼ってOKです。気になる人向けに、何をしているかだけ一言でいうと——「回答を“項目:内容”の形に整えて、自分宛てに送る」。それだけです。
設定で変えられるのは2か所だけ。通知先のメール(空っぽのままなら、自分のアドレスに届きます)と、メールの件名。ここだけ、好みで触ってもOKです。件名のうしろに付く「(○件目)」は、コードが自動で足してくれます。
つまずき先回り:許可の画面と、貼り付け事故
ここが、この記事のいちばん大事なところかもしれません。わたしが実際に詰まった2か所を、先に共有します。詰まっても、こわれていません。
つまずき①:許可の画面で、一瞬ひるむ
手順5で「初期設定」を実行すると、Appsスクリプトがこう聞いてきます。

「承認が必要です」。……出ましたね、これ。最初はちょっとドキッとしますよね。わたしもそうでした。でもこれは、“これから自動で動かすために、あなたの許可をください”という確認なだけ。こわがらず、「権限を確認」を押します。
次に、自分のGoogleアカウントを選ぶ画面が出ます。いつものアカウントを選んで、「次へ」。
そして——この記事でいちばん大事な画面が、これです。

「アクセスできる情報を選択してください」。ここでいちばんやりがちなのが、チェックを入れずに「続行」を押してしまうこと。そうすると、必要な許可が渡らず、通知が動いてくれません。
正解はかんたん。いちばん上の「すべて選択」にチェックを入れるだけ。すると、下の項目が全部オンになります。

この「全部にチェック」の状態にして、「続行」。これで許可は完了です。
ちなみに、求められている許可はこんな中身です。どれも今回の「回答が来たら、中身を整えて自分にメールする」仕組みに、ちゃんと必要なものだけです。
- スプレッドシートの参照・編集 → 届いた回答を読み取って、メール本文に入れるため。
- フォームの表示と管理 → どのフォームの回答かを扱うため。
- メールの送信 → 自分あてに通知メールを出すため。
- 自分がいないときに実行 → 回答が来た“その瞬間”に、自分が見ていなくても自動で動くため。
こわい権限を、黙って渡しているわけではありません。
許可が終わると、スプレッドシートのほうに、こんな小さな表示が出ます。これが出たら——セットアップ完了です。おつかれさまでした。

【もし“赤っぽい警告”が出たら】 環境によっては(とくに個人の
@gmail.comの場合)、上の画面の前に「このアプリは Google で確認されていません」という赤っぽい画面が出ることがあります。これも正常なので、安心してください。意味は「あなたが(AIに書かせて)たった今つくったものは、まだGoogleの審査を受けていません」というだけ。自分専用に作って自分で動かすぶんには、ふつうに出る画面です。進み方は——「詳細」をクリック →「(あなたのプロジェクト名)(安全でないページ)に移動」をクリック。すると、上と同じ許可の画面にたどり着きます。「安全でないページ」とありますが、“危険”ではなく“Googleがまだ審査していない”という意味です。
つまずき②:貼ったのに、一覧に「初期設定」が出てこない
手順5で選択メニューを見たとき、初期設定 が見当たらない。「あれ、消えた…?」と固まる——わたしが、まさにこれでした。
原因は、最初から入っている空っぽの見本(英語で myFunction と書かれた部分。これは英語の名前というだけで、気にしなくて大丈夫です)の“中”に、コードを貼ってしまったこと。新しい紙に書けばよかったのに、見本の余白に上書きしてしまった、という感じです。
直し方は拍子抜けするほど簡単です。画面の中を全部選んで(Cmd / Ctrl + A)、いったん消して、まっさらな状態に貼り直すだけ。これで 初期設定 がちゃんと一覧に出てきます。
これで、何が変わる?
もう、スプレッドシートを開いて「まだか」とがっかりすることも、3日後に「やってしまった」と青くなることもありません。あの時間と、あの小さな不安。気づいたら、まるごと無くなっていました。
ひとつは小さいです。でも、こういう「めんどくさい」を一個ずつ片付けていくと、定時で帰るに、一歩ずつ近づきます。
そして今日いちばん大きかったのは、通知そのものより——「AIに頼んで、貼って、動かす」を、自分の手で一回やりきれたこと。これができれば、次からは題材が変わるだけです。
次回予告——公開しました。 この通知をLINEに飛ばす版はこちら:Googleフォームの回答をLINEに自動通知。メールよりスマホで気づきやすくて、便利です。
「自分にはどうせ無理」と思っている人の、最初の一歩になればうれしいです。詰まったところがあれば、コメントで教えてください。一緒に抜けましょう。
その面倒な作業、Google×AIで自動化。
部員は、わたしとAI。
このシリーズのこれまで:創刊号(入口)/記事01:フォーム回答をメールで受け取る(この記事)/記事02:フォーム回答をLINEに即時通知/記事03:フォーム回答を毎朝自動集計してLINEに通知/記事04:名簿から差し込みメールを一斉送信/記事05:長いGmailをAIで3行+やることリストに/記事06:毎朝、未読メールを自動で要約して1通に/記事07:たまった自由記述を、AIでテーマ別に分類・集計/記事08:登録キーワードのニュースを、毎朝LINEに/応用編その1:AI秘書「ぽけっと手帳」(全体像)/応用編その2:リサーチ秘書(追いたい分野のニュースが毎朝1通)/育てる編①:ためた見出しに"質問"できる(台帳Q&A)/育てる編②:「医療も追って」で集める分野を増減(設定変更)/育てる編③:「今週どうだった?」でためた台帳を週次まとめ/育てる編④:「地図にして」でためた見出しを放射状の地図に(見出しマップ)/育てる編⑤:「再エネ政策を追いたい」で検索語まで含む設定をAIが設計(設定アシスタント・完結)/応用編その3:受発注・請求 秘書(受注が来たら、選ぶだけで見積書・請求書のPDFに)/受発注 育てる編①:入金消込・督促・領収書PDF/受発注 育てる編②:受注した瞬間に在庫を押さえる/受発注 育てる編③:発注点アラートと発注書PDF/受発注 育てる編④:月次集計・売上グラフ・会計CSV(最終回)/基礎編:URLひとつで“自分の申込ページ”を作る(Webアプリ)/基礎編:申し込まれた瞬間に、確認メールが自動で返る/基礎編:申し込んだら、控えのPDFが自動で届く/基礎編:申込の控えが、勝手にドライブへ積み上がっていく/基礎編:申込のひとことを、届いた瞬間にAIが仕分ける/基礎編:誰も画面を開いていないのに、毎朝まとめが届く/基礎編:申込が来た瞬間、ポケットのLINEが鳴る(最終回)/応用編その4:申込・予約 秘書(満席の瞬間、ページが自分から閉まる)/申込・予約 育てる編①:キャンセル待ちと自動繰り上げ/申込・予約 育てる編②:承認制とお断り下書き/申込・予約 育てる編③:前日リマインダーと毎朝まとめ/申込・予約 育てる編④:管理ページ(最終回)
#GAS #Googleフォーム #メール通知 #コピペOK



コメント