earthpg:GAS専門のプログラミングスクール

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

グーグルフォームでアンケート作ったんだけど、自動返信とかスプレッドシート連携ってGASでできるの?
猫男
猫男
catman
catman
できるとも!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で一から作れちゃうの!?
猫男
猫男
catman
catman
その通り。しかも質問内容もスクリプトで柔軟に増減できるぞ。

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で自動処理って流れができるんだ!
猫男
猫男

 

【練習問題】GAS × グーグルフォーム 基礎ドリル

この記事で学んだ内容を、練習問題で復習してみよう!

問題1:GASで新しくフォームを作りたい!

あなたは「お客様アンケートフォーム」を作りたいと思っています。
このフォームには次の2つの質問を追加したいです。

  • あなたの名前(テキスト入力)
  • 好きな果物(選択式:「りんご」「バナナ」「ぶどう」)

✅ このフォームを GAS を使って作るコードを書いてみましょう!

問題2:フォーム回答後に自動返信メールを送りたい!

フォームで入力された「メールアドレス」に対して、自動で「ご回答ありがとうございました!」というメールを送りたいです。

✅ GASのスクリプトでは、どんなポイントに注意すればいいでしょうか?

  • トリガーはどう設定する?
  • メール送信に使うGASの関数は何?

問題3:スプレッドシートとの連携について

フォーム回答がスプレッドシートに記録されるように設定した後、GASで「最新の回答内容」を取得したいと思っています。

✅ どのGASのクラス(オブジェクト)を使って、どんなコードを書けば良さそうでしょうか?

【おまけ問題】応用編チャレンジ

「回答の中に ‘急ぎ’ という文字が含まれていたら、担当者に特別なメール通知を送る」ような仕組みを作りたいです。

✅ どんな流れでスクリプトを書きますか?
✅ 必要な関数や条件分岐はどんなものになりそうですか?

【ヒント集】

  • フォームを作るときは FormApp.create() を使うよ!
  • メール送信には GmailApp.sendEmail() を使うよ!
  • スプレッドシート操作には SpreadsheetApp を使うよ!
  • トリガーは「フォーム送信時」で設定しよう!
わーい!練習問題で手を動かせると身につきやすいね!
猫男
猫男
catman
catman
その通り!問題を解きながらスクリプトに慣れていこう!

 

【解答・解説編】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で即送信!
  • スプレッドシート連携:回答を整理・加工も自動でできる!
これならグーグルフォームを超効率化できそう!さっそく作ってみる!
猫男
猫男
catman
catman
その調子だ!フォームもスクリプトで操れば、世界が広がるぞ!