「そろそろ誰か、フォームに答えてくれたかな」
——そう思って、スプレッドシートを開く。来ていない。少し経って、また開く。やっぱり来ていない。
この、何度もタブを開いては閉じる感じ。地味に、しんどいですよね。
はじめまして。「定時で帰る開発部」の、最初の実践レシピです。部員はわたしと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に自動通知【LINE Notify終了後もコピペOK】。メールよりスマホで気づきやすくて、便利です。
「自分にはどうせ無理」と思っている人の、最初の一歩になればうれしいです。詰まったところがあれば、コメントで教えてください。一緒に抜けましょう。
▶ この開発部の入口(創刊号)はこちら:創刊号を読む
その面倒な作業、Google×AIで自動化。
部員は、わたしとAI。



コメント