【GASで】Googleフォームに自動返信を実装する


Googleフォームに自動返信を実装したい人

Googleフォームでアンケートを取った後
1人1人にメール送るのめんどくさいなあ
そういった作業はGASで自動化しましょう。

 

今回の手順をまとめると以下の通りです

  1. Googleフォームを作成する
  2. Googleフォームに紐づけたスプレッドシートを作成する
  3. メール送信用のGASを作成する
  4. Googleフォームに入力された時にGASを実行するトリガーを作成する
 
たったこれだけです。

 

ちなみに、コードはこちらにまとめてありますので、ソースコードだけほしいという方は読み飛ばしちゃってください。

 

Googleフォームを作成する

まず質問の受け皿となるGoogleフォームを作成します。

Googleフォームで設定可能な項目

今回は説明用に簡易的なフォームを作成します。

  • 記述式
  • プルダウン
  • ラジオボタン
  • チェックボックス

の4種類のフォームを設置することができます。それぞれをざっと説明すると以下の通りです。

記述式

任意のテキストを入力するためのやーつ

プルダウン

あらかじめ決められた選択肢の中から選んでもらうやーつ

ラジオボタン

複数ある選択肢の中から1つだけ選んでもらうやーつ

チェックボックス

複数ある選択肢の中から、任意の数の回答を選んでもらうやーつ

 

今回はテスト用のフォームなので、メールアドレスを入力するフォームがあればOKです。

ちなみにメールアドレスのフォームは右上の歯車マークをクリックすると追加することができます。

この方法で追加したメールアドレスフォームは、バリデーションといって、メールアドレスが正しい形式かどうかチェックしてくれる機能があるので、テキストボックスではなくこちらを使うのが吉です。

こんな感じで、メールアドレスだけの入力欄を持ったGoogleフォームが完成しました。

メールアドレスを保持するスプレッドシートを作成する

アンケートの受け皿となるGoogleフォームが出来たので、続いて回答の受け皿となるスプレッドシートを作成します。

スプレッドシートとは、同じくGoogleが提供するサービスの1つでして、Excelのようなものです。

 

先ほど作成したGoogleフォームのタブを切り替えまして、回答タブを開きます。

すると、画面右上にいかにもExcelっぽい緑のマークがありますので、それをクリックするとスプレッドシートを作成することができます。

新しいスプレッドシートを作成するか、既存のスプレッドシートに紐づけるか選ぶことができます。今回は適当な名前をつけたテスト用のスプレッドシートを作成しました。

 

作成ボタンを押すと、実際に作成されたスプレッドシートが開かれるかと思います。

今回は最小限のGoogleフォームなので、回答された時間を記録するタイムスタンプ列と、回答時に入力されたメールアドレスを保持する列の2つだけが作成されている状態です。

 

Googleフォームにテスト用のメールアドレスを入力してみる

一応、動作の検証の意味込めて、作成したフォームにテスト用のメールアドレスを入力してみます。

 

Googleフォームの右上にある目のマーク👁をクリックすると、編集画面から入力画面に切り替わります

 

入力用画面に切り替わったら、適当なアドレスを入力します。

後々、自分のアドレスを入力して自動返信のテストをすることになるので、自分のアドレスを入力しておいてもOKです。

 

送信ボタンを押すと、回答が完了し、紐づいているスプレッドシートに回答が自動的に入力されます。

 

以上で動作確認終了です。

あとは、このフォームを公開すれば、メールアドレスの収集をすることができます。

 

Googleフォームに紐づいたGASを作成する

続きまして、スプレッドシートに入力されたメールアドレス宛に自動でメールを返信するGASを作成していきます。

コードのアルゴリズムとしては

  1. 取得するスプレッドシートを指定する
  2. 指定したスプレッドシートから必要な値(メールアドレスなど)を取り出す
  3. 取り出した値を使ってメール送信関数を実行する

といった手順になります。

 

では早速GASを作成していきましょう!

まず、スプレッドシート→ツール→スクリプトエディタを開きまして、GASのエディタを開きます。

 

エディタを開いたら、あとはGASのコードを書いていきます!

詳しい内容はこの辺の記事が参考になると思うので、ぜひ読んでみてください。

【コピペでOK】Googleフォームから自動返信するGASのサンプルコード

function autoReply() {
    var MAIL_COLUMN = 'メールアドレス';

    // メール送信先
    var from = "送り主のメールアドレス";
    var name = "送り主の名前";
    var to = ""; // スプレッドシートからアドレスを読み込んで

    var subject = "ここにメールのタイトルを入力してください。";
    var body = "ここにメールの本文を入力してください。";

    // スプレッドシートの取得
    var sheet = SpreadsheetApp.getActiveSheet();
    var rows = sheet.getLastRow();
    var cols = sheet.getLastColumn();
    var data_range = sheet.getDataRange();

    //スプレッドシートから値を取得
    for (var i = 1; i <= cols; i++) {
        var col_name = data_range.getCell(1, i).getValue(); // カラム名
        var col_value = data_range.getCell(rows, i).getValue(); // 入力値
        if (col_name === MAIL_COLUMN) {
            to = col_value;
        }
    }

    // 送信先オプションを設定
    var options = {
        name: name
    };

    // 送信先アドレスが存在していたら、メール送信
    if (to) {
        MailApp.sendEmail(to, subject, body, options);
    } else {
        MailApp.sendEmail(from, "メールアドレスが入力されていません。");
    }
}

【最後に】トリガーを設定して、フォームに回答が送信されたらメールを送信する

いよいよ最終ステップです。

あとはトリガーを使ってフォームに回答が送信されたタイミングで、先ほど作成したメール送信用のGASが自動的に実行されるように設定します。

編集→現在のプロジェクトのトリガーを開き、トリガー作成画面を開きます

右下にトリガー作成ボタンがあるので、下記と同じ設定でトリガーを作成します。

以上で完了です!!

 

これで、フォームにメールアドレスを入力すると、自動でメールが帰ってくるようになります。

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください