GASでグーグルフォームを完全自動化|作成・自動返信・スプレッドシート連携まとめ


GASでグーグルフォームを操作する基本
GAS(Google Apps Script)は、Googleフォームを自在に操作できるスクリプトが書けます!
便利なクラス:FormApp を使えば、
✅ フォームの作成
✅ 回答の取得
✅ 自動返信メール
✅ スプレッドシートへの連携
すべて自動化できます!
GASでグーグルフォームを作成する
まずは、フォームそのものをGASで作るコードから!
function createGoogleForm() {
const form = FormApp.create('アンケートフォーム');
form.addTextItem().setTitle('あなたの名前を教えてください');
form.addMultipleChoiceItem() .setTitle('好きな色は?') .setChoices([ form.createChoice('赤'), form.createChoice('青'), form.createChoice('緑') ]);
}
✅ これだけで、名前を聞くテキスト項目+好きな色を聞く選択項目が作れます!


GASでグーグルフォームに自動返信メールを設定する
フォームに回答があったら、自動で「受け付けましたメール」を送ることもできます。
function onFormSubmit(e) {
const email = e.namedValues['メールアドレス'][0]; // フォームの質問タイトルに合わせる
const name = e.namedValues['あなたの名前を教えてください'][0];
GmailApp.sendEmail( email, 'アンケート回答ありがとうございます', name + 'さん、アンケートへのご協力ありがとうございました!' );
}
✅ ポイントは「トリガー」を設定すること。
スクリプトエディタで「トリガー」→ onFormSubmit を「フォーム送信時」に紐づけます!
GASでグーグルフォームとスプレッドシートを連携する
フォームの回答を自動でスプレッドシートに保存するのは、超基本!
フォーム編集画面で
✅ 「回答」→「スプレッドシートにリンク」
を設定すればOKです。
さらにGASで自動処理を追加するなら、たとえば:
function processNewAnswer(e) {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const lastRow = sheet.getLastRow();
const timestamp = sheet.getRange(lastRow, 1).getValue();
const answer = sheet.getRange(lastRow, 2).getValue();
Logger.log('回答:' + answer + '(送信日時:' + timestamp + ')');
}
✅ 新しい回答が来たら、内容を処理するスクリプトも組めます!

【練習問題】GAS × グーグルフォーム 基礎ドリル
この記事で学んだ内容を、練習問題で復習してみよう!
問題1:GASで新しくフォームを作りたい!
あなたは「お客様アンケートフォーム」を作りたいと思っています。
このフォームには次の2つの質問を追加したいです。
- あなたの名前(テキスト入力)
- 好きな果物(選択式:「りんご」「バナナ」「ぶどう」)
✅ このフォームを GAS を使って作るコードを書いてみましょう!
問題2:フォーム回答後に自動返信メールを送りたい!
フォームで入力された「メールアドレス」に対して、自動で「ご回答ありがとうございました!」というメールを送りたいです。
✅ GASのスクリプトでは、どんなポイントに注意すればいいでしょうか?
- トリガーはどう設定する?
- メール送信に使うGASの関数は何?
問題3:スプレッドシートとの連携について
フォーム回答がスプレッドシートに記録されるように設定した後、GASで「最新の回答内容」を取得したいと思っています。
✅ どのGASのクラス(オブジェクト)を使って、どんなコードを書けば良さそうでしょうか?
【おまけ問題】応用編チャレンジ
「回答の中に ‘急ぎ’ という文字が含まれていたら、担当者に特別なメール通知を送る」ような仕組みを作りたいです。
✅ どんな流れでスクリプトを書きますか?
✅ 必要な関数や条件分岐はどんなものになりそうですか?
【ヒント集】
- フォームを作るときは
FormApp.create()
を使うよ! - メール送信には
GmailApp.sendEmail()
を使うよ! - スプレッドシート操作には
SpreadsheetApp
を使うよ! - トリガーは「フォーム送信時」で設定しよう!


【解答・解説編】GAS × グーグルフォーム 基礎ドリル
問題1:GASで新しくフォームを作りたい!
解答例:
function createCustomerSurveyForm() {
const form = FormApp.create('お客様アンケートフォーム');
form.addTextItem() .setTitle('あなたの名前を教えてください');
form.addMultipleChoiceItem() .setTitle('好きな果物を選んでください') .setChoices([ form.createChoice('りんご'), form.createChoice('バナナ'), form.createChoice('ぶどう') ]);
}
解説:
FormApp.create('フォームタイトル')
で新しいフォームを作成addTextItem()
でテキスト入力項目を追加addMultipleChoiceItem()
で選択式の質問を追加
問題2:フォーム回答後に自動返信メールを送りたい!
解答例:
function onFormSubmit(e) {
const email = e.namedValues['メールアドレス'][0];
GmailApp.sendEmail( email, 'ご回答ありがとうございました!', 'アンケートにご協力いただき、ありがとうございました。' );
}
ポイント解説:
- トリガー設定が必須! GASエディタで「トリガー」→「onFormSubmit」を「フォーム送信時」に設定します。
- メール送信は
GmailApp.sendEmail()
を使います。 e.namedValues['質問タイトル']
から回答データを取り出します。
問題3:スプレッドシートとの連携について
解答例:
function getLastAnswer() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const lastRow = sheet.getLastRow();
const latestAnswer = sheet.getRange(lastRow, 2).getValue(); Logger.log('最新の回答:' + latestAnswer);
}
解説:
- スプレッドシート操作には
SpreadsheetApp
を使用。 getLastRow()
で最後に入力された行番号を取得。getRange(行, 列)
で対象セルの値を取得。
✅ ちなみに、フォーム回答の1列目は通常「タイムスタンプ」なので、2列目以降が実際の回答内容になります。
【おまけ問題】応用編チャレンジ
解答例(急ぎの回答があったら通知する)
function urgentNotification(e) {
const answer = e.namedValues['お問い合わせ内容'][0];
if (answer.includes('急ぎ')) {
GmailApp.sendEmail( '担当者のメールアドレス@example.com', '【緊急】急ぎ対応が必要な問い合わせがありました!', '内容:' + answer );
}
}
解説:
- フォーム回答を受け取るには、
onFormSubmit
トリガーが必要です。 includes('急ぎ')
で文字列に「急ぎ」が含まれているかチェック!- 該当すれば
GmailApp.sendEmail()
で即座に通知を送ります。
まとめ:GASでグーグルフォームをもっと便利に!
- フォーム作成:FormAppで一から作れる!
- 自動返信:onFormSubmitトリガー+GmailAppで即送信!
- スプレッドシート連携:回答を整理・加工も自動でできる!

