GAS(Google Apps Script) その1 Googleフォームが送信されたらメールを送る
エントレでは問い合わせフォームとしてGoogleフォームを使っているのですが、メールで通知が来るように仕掛けたくて、Google Apps Script(GAS)で実現してみました。とても便利で、他にもいろいろと出来そうなので、コラムとして(備忘録として)残してみます。
※これは全く演劇と関係ないコラムです。
Google Apps Script(GAS)とは?
Googleが提供するアプリケーション開発プラットフォームです。WEBでよく使われているプログラム言語のひとつ、JavaScriptを使っていろいろな作業を自動化できる開発ツールです。Googleスプレッドシートなどとも連携ができるのでデータを扱う際にも重宝しそうなツールです。
では、「Googleフォームが送信されたらメールを送る」システムの作り方を書いていきます。
1)Googleフォームで問い合わせフォームを作る
に行き、空白のフォームをクリック。
「無題のフォーム」というのが出てくるので、お問い合わせフォームにタイトル書き換えます。
「無題の質問」は「お問い合わせ」に変更。形式は「段落」にしておきましょう。
「質問」を増やす場合は、右側の(+)ボタンを押して、項目を増やします。
ここでは「お名前」を足しておきました。
「お名前」の方が「お問い合わせ」よりも前の方が良いと思うので、(:::)みたいなマークをドラッグして入れ替えました。
お問い合わせフォームは返信する必要があるので、入力者のメールアドレスが必須になります。
「設定」のタブを開き、「メールアドレスを収集する」のところが「回答者からの入力」になっていることを確認します。
これでフォームの設定は完了しました。
右上にある目玉のようなアイコン(プレビューアイコン)をクリックすると、実際にユーザーが目にするフォームの見え方を確認できます。
こちらからフォームに何か打ち込んでみて、回答が記録されるか確かめてみてください。
2)Google Apps Scriptでメール送信の仕組みを作る
フォーム作成画面の右上にある3点マーク(縦に・が3つならんでいるアイコン)をクリックするとさらにメニューが出てくるので、<>スクリプトエディタをクリックします。
すると、ページが変わって、Apps Scriptのページが開きます。
次に、
function myFunction() { }
と、書いてあるところを変更していきます。
この領域にコードを書いていくことで、フォームの機能を作ることができます。
では、一旦
function myFunction() { }
を消して、以下のコードをコピペしてください。
function sendform(e){ var items = e.response.getItemResponses(); //フォームに入力された複数の値をitemsというリストにそれぞれ取得 var yourMail = e.response.getRespondentEmail(); //フォームに入力されたメールアドレスを取得 var msg = 'メールアドレス: ' + yourMail + '\n\n'; //返信メッセージにメールアドレスを記載 //返信メッセージに「お名前」「問い合わせ内容」を記載 for (var i = 0; i < items.length; i++) { var item = items[i]; var q = item.getItem().getTitle(); var a = item.getResponse(); msg += q + ': ' + a + '\n\n'; } GmailApp.sendEmail('XXXXX@YYYYY.com', 'お問い合わせフォームに新しい回答がありました。', msg); }
コードのそれぞれの行の右側に(//)から始まる部分がありますが、これは「コメント」でして、コードとして機能しない部分です。ここにそれぞれのコードの意味をメモっておきました。(※きっと忘れてしまう未来の自分のために)
なお、forから始まる五行ほどのコードは、ユーザーが入力した値を一項目ずつ繰り返し取得して、返信メッセージに記載していくという内容です。
最後の、GmailApp.sendEmail という部分は、返信メッセージに記載する内容です。
一つ目の ‘XXXXX@YYYYY.com’ のところを自分のアドレスにすれば、内容が自分にメールされます。逆に yourMail とすると、ユーザーがフォームで打ち込んだユーザーのメールアドレスにこのメールを送ることができます。つまり自動返信できるというわけですね。とりあえず、実験が必要なので、自分のメールアドレスにしてください。
‘お問い合わせフォームに新しい回答がありました。’ とあるところは、メールの件名です。ここはご自身の好きな内容に書き換えてください。
msg は返信メッセージのことで、 forのところで書いた内容がメールに書かれます。
なお、この ‘ ’ は、文字列だよという目印みたいなものなので、消さないように気をつけてください。
コードを書いた後にはCommand+Rを押すか、上部にあるフロッピーディスクマークを押して保存します。
3)Google Apps Scriptでトリガーを設定する
コードはこれで出来たんですが、最後にトリガー(引き金)を設定します。
左側の上から4番目にある目覚まし時計マーク(トリガーのアイコン)をクリックします。
「新しいトリガーを作成します。」をクリックします。
「イベントの種類を選択」のところを「フォーム送信時」にして保存します。
すると、こんなウィンドウが出てきます。
使うGoogleアカウントを選択します。
するとアラートが出てくるので、左下の「Advanced」をクリックします。
さらに Go to 無題のプロジェクト (unsafe) をクリックします。
Googleアカウントへのアクセス許諾を求められるのでAllowを押します。
これでトリガーが保存できるようになるので、「保存」をクリックします。
これでトリガーが完成しました!
4)実験する
フォームのプレビュー画面に戻って、実際にフォームを送信してみましょう。
うまく自分にメールが返信されれば成功です。
GmailApp.sendEmail という部分をyourMailとすれば、メールの差出人に自動返信する仕掛けが作れますので、ぜひ試してみてください。
(文:森脇孝/エントレ)