とある学生web開発者のブログ

知ったこと、感じたことを書きます

GASでGoogleフォームに反応して自動的にメールを送信させた

はい、さっそく宣伝です!

【帰ってきた!】学生×社会人 ゆる〜くお話ししましょ 2016 Summer

こちらのイベント社会人と学生がピザでも食べながらおしゃべりするというものです!😊
8月27日ひまなひとぜひ来てね!

というわけで、BISLINという学生団体に入っています。
そこでメンバーが困っていたので、Google Apps Script(GAS)を使ってちょっと負担を軽くしたお話です。

今回のシチュエーション

BISLINの活動内容がイベントやセミナーの開催なのですが、そこでほぼ毎回使われるツールが「Google フォーム」。
おそらく使ったことある人も多い、便利ツールですね〜
BISLINはこいつを「参加申し込みのためのフォーム」として使ってます!
そして、申し込みしてくれた方には登録してくれた名前付きでお礼のメールをひとりひとり送信してました。

今回の目標

フォームに登録してくれた人に自動でメールを送信!!

↑ささいなことですが、自動化できたらだいぶ楽になるはず!

使用言語など

GAS なんやねんという方はこちら
環境はブラウザで書くのでほとんど選ばないですね!流石です。

完成したコード

function submitForm(e){
 
try{
 
// 変数セット
var admin = "****@test.com"; //フォーム作成者のメアド
var cc = ""; // Ccです。通常空欄
var bcc = admin; // Bccです。自分たちにも送ります。
var to = ""; // Toです。 フォーム入力者のアドレスは下で取得されます
var username = "";
  
// 入力項目を本文に埋め込む
var FORM_DATA = e.response.getItemResponses();
for (var j = 0; j < FORM_DATA.length; j++){
  //入力されたお名前をusernameに入れる
  if(FORM_DATA[j].getItem().getTitle() == "お名前" && FORM_DATA[j].getResponse() != ""){
    username = FORM_DATA[j].getResponse();
  }
  //入力された連絡用メールアドレスをtoに入れる
  if(FORM_DATA[j].getItem().getTitle() == "連絡用メールアドレス" && FORM_DATA[j].getResponse() != ""){
    to = FORM_DATA[j].getResponse();
  }
}

 
// 件名、本文の設定
//改行するには \n を入れてください
var eventName = "イベントの名前"; // ここにはBISLINの開催するイベント名が。
var eventUrl = ''; // イベントのURLです。
var subject = "BISLINEイベントへの参加申し込みを受け付けました!"; //これがメールの件名になります。

// ここから下のbodyがメール本文
// 人間が読みやすいように一行ずつシングルクオーテーションでつないでます。
var body = username
           + '様 こんにちは!\n\n'
           + '学生団体BISLINです!\n\n'
           + 'この度は '
           + eventName
           + ' にご応募いただき、ありがとうございます!\n\n'
           + 'イベントページ\n'
           + eventUrl
           + '\n\n'
           + '当日は学生と社会人全員が、ゆるーく交流できるコンテンツをご用意しております!\n'
           + '周りのお友達も誘って、ぜひ参加しに来てください♪\n'
           + '当日のご参加を、心よりお待ちしております。\n\n'
           + 'BISLIN『ゆる話vol.2』運営一同\n\n'
           + '※このメールはイベントフォームにご応募いただいた方に自動送信されています。\n'
           + '※ご意見・ご質問等がおありの際は、こちらのメールアドレスにご連絡ください。\n'
           + 'メールアドレス:bis.lin.15@gmail.com\n'
           + 'ホームページ:http://bislin.org/\n';
           
// 万が一メールアドレスが未入力だったら管理者のBISLINにメルアドが返ってきます。
if(to == ""){
to = admin;
}
 
MailApp.sendEmail(to, subject, body, {bcc: bcc}); //メールを送信
 
} catch (e) {
//エラーが発生した場合に管理者にメールを送信する
MailApp.sendEmail(admin, "Error report", e.message);
}
 
}

コードの説明はコード内のコメントで雑に書いておきました。 フォームの入力項目が増えたら、

for (var j = 0; j < FORM_DATA.length; j++){

  //「お名前」を設定している項目名にすればokです
  if(FORM_DATA[j].getItem().getTitle() == "お名前" && FORM_DATA[j].getResponse() != ""){
    username = FORM_DATA[j].getResponse(); // 変数名もいい感じに変えてね
  }

}

そして送られてくるメールがこちら↓

メール本文内に名前が入ってて親身ですね( ̄(工) ̄)

と、いい感じに作った感出しましたけど、ベースはこちらの方のコードです笑

注意したこと

決して技術力が保障されていない学生団体BISLINでは他のひとが(後世のメンバーが)再開発しやすいように改変することが不可欠です。
要は「入力された情報を取得しやすい」&「メール本文に組み込みやすい」ということ!

複雑なfor文の中でデータを取り扱うよりも、変数セットしてメール本文の好きなところに好きなだけ使える方が大事ですからね😊 usernameとかtoとかeventNameとか!

結果

できてよかった・・・σ(^_^;)
まだ正直実験段階だけど、手元のデバイスなどではいい感じなのでいい感じのはず!笑

これ以外の使い方

送信先は自由!
ってことはフォームに登録があった時点で自分にメールを送って自己満足するのもありかな笑
他にもアンケートで特定の回答をした人にだけ特定のメールを送るとかどうだろう。クイズ的な。
とにかく自由度高めで楽しかったです😊

こういうのやってみたいCOB生いたら連絡ください😂