サイトアイコン エントレ|演劇動画ニュース

Google Apps Script(GAS) その1 Googleフォームが送信されたらメールを送る

GAS(Google Apps Script) その1 Googleフォームが送信されたらメールを送る

エントレでは問い合わせフォームとしてGoogleフォームを使っているのですが、メールで通知が来るように仕掛けたくて、Google Apps Script(GAS)で実現してみました。とても便利で、他にもいろいろと出来そうなので、コラムとして(備忘録として)残してみます。
※これは全く演劇と関係ないコラムです。

Google Apps Script(GAS)とは?

Googleが提供するアプリケーション開発プラットフォームです。WEBでよく使われているプログラム言語のひとつ、JavaScriptを使っていろいろな作業を自動化できる開発ツールです。Googleスプレッドシートなどとも連携ができるのでデータを扱う際にも重宝しそうなツールです。

では、「Googleフォームが送信されたらメールを送る」システムの作り方を書いていきます。

1)Googleフォームで問い合わせフォームを作る

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とすれば、メールの差出人に自動返信する仕掛けが作れますので、ぜひ試してみてください。

 
(文:森脇孝/エントレ)

モバイルバージョンを終了