少しだけ飛びましたが、Google Apps ScriptでGoogle Formに自動返信メール設定をする方法の紹介、最終回のパート3となりました!
今回で仕上げていきたいと思います。
これまでの記事をご覧になりたい方は、上記の記事リンクからぜひ飛んでみてくださいね!
目次
Google Formに自動返信機能を追加・これまでの復習
工程1、まずGoogle Apps Scriptでメールを送信するプログラムを書いてみる。
シリーズ初回、Google Apps ScriptでGoogle Formに自動返信メール設定1 -メール送信-では、Google Apps Scriptでメールを送信するプログラムを紹介いたしました。
今回の最終ゴールは「Google Formに自動返信メール設定」なので、当然メールを送信できないと意味がないですよね!
なので、まず今回のプログラムの根本となる部分をご紹介させていただいているというわけです。
この部分をシリーズ初回の記事で紹介させていただいています。
工程2、メールを「いつ」送るのかを設定するためのトリガーについて学ぶ
工程1でメールを送ること自体はできましたが、「Google Formから入力送信があったら」自動的にメールを即返信するように設定しないといけません。
ということで、シリーズ2回目「Google Apps ScriptでGoogle Formに自動返信メール設定2 -トリガー設定-では、「いつ」自動返信をするのか、言い換えれば、「いつ」自動返信をするプログラムを動かすのかを設定するために必要な「トリガー」という概念について記載いたしました。
「トリガー」は、「フォームに入力があったら」だけでなく、日時指定をして「何時何分にメールを自動的に送る」なんていう設定も簡単にできます!
工程3、自動返信文面の内容を編集し、フォーム入力者のアドレスに対して自動的に返信できるようにするなどの仕上げの設定を行う
そして最後の工程です。
これまでご紹介したのは、Google Apps Scriptのプログラムに直接、返信先のアドレスや返信文を手入力していましたが、実際には、「Google Formに入力されたメールアドレス」に対して自動返信を行うようにしないと意味がないですし、返信文も、できればプログラムに直接書くのではなく、エクセル(スプレッドシート)に書くようにすれば、プログラムが触れない方でも、本文編集ができて便利ですよね!
今回の記事では、そのやり方を、順を追って解説していきます!
Google Formに入力されたアドレスに対して自動返信を送る方法
まずは、Google Formに入力されたアドレスに対して自動返信できるようにする方法からご紹介していきます!
自動返信先のアドレスはどこから取ってくればいいのか
まず、今回ご紹介しているように、Google Formから入力された内容(名前やメールアドレスなど)をスプレッドシートに保存している場合、以下のようにスプレッドシードに記録されていきます。
新しくGoogle Formから入力があるごとに、新しい行に最新のデータが記録される、そんな感じですね。
ということは、記録用のスプレッドシートの「一番最後の行」にあるデータにメールアドレスが含まれているので、その情報をとってきて、返信アドレスに設定すればいいことになりますよね!
スプレッドシートの特定の場所からデータを取ってくる方法
まずはスプレッドシードを確認してみます。
今回のサンプルの場合、必ず2列目(B列目)にメールアドレスのデータが保存されているのがわかります。
ここを活用します!
Google Spreadシートの特定のセルからデータを取ってくるときは、以下のようなプログラムを使います。
//スプレッドシートにあるデータを取りたいのでまずは
//getActiveSpreadsheetは今開いているスプレッドシート
var ss = SpreadsheetApp.getActiveSpreadsheet();
//スプレッドシートの中でフォームから入力されたデータが保存れているシートの名前を手掛かりにして
//データのある場所を指定
var sheet = ss.getSheetByName("フォームの回答 1");
//今データが入力されている一番最後の行をgetLastRow()で取得できる
//cellの指定は基本的にgetRange()。()の中に、対象となるセルの場所を指定(下記とB2とかb4とかつまりB列のいずれか)
var lastRow = sheet.getLastRow();
var address = sheet.getRange("B"+lastRow).getValue();
//メールを送る
MailApp.sendEmail(address,"テスト","テストメールです");
スプレッドシートのデータをとってくる
Google Apps Scriptでは、命令をする「場所」、データをとってきたい「場所」など、まず場所の指定がすごく重要になってきます。
この辺はスライドにまとめてみました。というよりも、スライドでいい資料が手元にあったので・・・笑
最終的にaddressという名前をつけたデータ保存箱(変数)にデータを入れたら、先ほどまで自分のメールアドレスが入っていた場所をaddressに書き換えます。
これで、Google Formに入力があったら、自動返信が入力者のメールアドレスに対して実行できるようになります!
スプレッドシートに自動返信文のタイトルと本文を入力して、Google Apps Scriptで取得
ここからは先ほどの応用。
まずは新しいシートを作成して、自動返信文のタイトルと本文を入力してみます。
こんな感じ。
そして、先ほどの応用で、スプレッドシートに入力されているデータを取得して、sendEmail関数の中身を書き換えします。
var ss = SpreadsheetApp.getActiveSpreadsheet();
//スプレッドシートの中でフォームから入力されたデータが保存れているシートの名前を手掛かりにして
//データのある場所を指定
var sheet = ss.getSheetByName("フォームの回答 1");
//今データが入力されている一番最後の行をgetLastRow()で取得できる
//cellの指定は基本的にgetRange()。()の中に、対象となるセルの場所を指定(下記とB2とかb4とかつまりB列のいずれか)
var lastRow = sheet.getLastRow();
var address = sheet.getRange("B"+lastRow).getValue();
//タイトルと本文をスプレットシートから取得
var reply = ss.getSheetByName("返信文入力");
var title = reply.getRange("A2").getValue();
var body = reply.getRange("B2").getValue();
//メールを送る
MailApp.sendEmail(address,title,body);
これが完成系! 実際にフォームにご自分のメールアドレスを含めてデータを入力してみてください。
プログラムが触れない方でもタイトルや本文が返信できるようにするのがポイント
方法だけならいくらでもあるのですが、今回ご紹介したのは「本文やタイトルをスプレットシートに入力して、それをGoogle Apps Script」で取得するという点。
こうすることによって、プログラムを触れない方が編集としないといけないとき(例えば本文の一部を変更しなければならない等)も、エクセルベースなら簡単に編集ができますよね!
これからもGoogle Apps Script関連の情報を投稿していきます!
ということで、かなり気合いを入れて書いてみたつもりでしたが、いざ書いてみると難しい難しい・・・
これからも、Google Apps Script関連の実用的で簡単な情報をどんどん投稿していこうと思います!
そして、日々わかりやすさを心がけて・・・