LoginSignup
30
32

More than 3 years have passed since last update.

GoogleフォームとSlackとメールをGASで連携する【前編 GoogleフォームとGメールを連携する】

Last updated at Posted at 2020-05-14

お申し込みフォームを簡単に作って、オペレーションも楽ちんにしたい!

オペレーションの流れ
IMG_0672.JPG

  1. フォームが送信される
  2. お問い合わせ内容をメールとSlackに通知、お問い合わせをした人には自動返信メール
  3. Slack上で、お問い合わせに対してどのように対応するかチームで議論
  4. 担当者がEメールで返信

このオペレーションがなかなか便利なので、備忘録として残すことにしました。
前編後編に分けてお送りします。


この記事でやること

この記事では前編の「GoogleフォームとGメールを連携する」について説明をします。
フォームが送信されたときにお問い合わせ内容をメールで通知し、お問い合わせをした人には自動返信メールを送信するものを作ります。

1. Googleフォームを作る

フォームを作りましょう。
スクリーンショット 2020-05-01 14.00.55.png

2. お問い合わせした人に自動返信するスクリプトを書く

GASのコードを書く

フォーム編集画面の三点リーダー(︙)→「スクリプトエディタ」を開き、下記のコードをコピペ&一部変更してください。

コピペしてGASのエディタに貼り付ける

GAS
FormApp.getActiveForm();

function sendForm(e) {
  var sendToAddress ="自分のメールアドレス";
  var serviceName = "【すごいアンケート】";
  var mailTitle = serviceName +'に関する新規のお問い合わせがありました';//メールのタイトルを設定
  var mailMessage = serviceName +'に関する新規のお問い合わせがありました。\n\n';
  var option = {};
  option.from = sendToAddress;


  var list=[];
  var itemResponses = e.response.getItemResponses();

  //フォームの項目に記述された内容を取得し、itemResponsesとlist
  itemResponses.forEach(function(itemResponse){
    mailMessage += '' + itemResponse.getItem().getTitle() + '\n'
    mailMessage += itemResponse.getResponse() + '\n\n'
    list.push(itemResponse.getResponse())
  });

  //フォームのメールアドレスと名前を取得し、それぞれの変数に格納する
  var userName = list[0]; 
  var userMail = list[1];

  // 自動返信メール件名
  var subject = serviceName +'にお問い合わせいただきありがとうございました。';

  // 自動返信メール本文
  var body = userName + '\n' +
    '\n' +
    'この度は'+serviceName +'にお問い合わせいただき、誠にありがとうございました。' +
    '\n' +
    '後日、弊社担当よりご連絡させていただきますので\n' +
    'よろしくお願い申し上げます。\n' + 
    '\n' +
    '─────────────────────────\n' +
    '署名をココに\n' +
    '─────────────────────────\n' +
    '\n';

  // メール送信
  GmailApp.sendEmail(userMail,subject,body,option); //自動返信メール
  GmailApp.sendEmail(sendToAddress,mailTitle,mailMessage,option); //自分への問い合わせ通知

}

一部変更する

userNameuserMailは、Googleフォームの何番目の項目かによって、番号を変えてください。
フォームの番号は、一番上から0,1,2...と続きます。

例:3つ目の項目が名前の場合
var userName = list[2];

トリガーを設定する

スクリーンショット 2020-05-10 19.22.35.png

Form送信をトリガーにして、GASで書いたfunctionを実行したいため、トリガーをセッティングします。
実行する関数は、sendForm、イベントの種類を「フォーム送信時」にして保存してください。
スクリーンショット 2020-05-14 22.22.17.png

GASからメール送信することを許可する

GASからメール送信できるよう、権限を与えます。

  1. 画像のアイコンを押して、許可してください。
    スクリーンショット 2020-05-10 19.27.19.png

  2. 許可を確認を押す
    スクリーンショット 2020-05-10 19.30.16.png

  3. ログインし、許可する
    スクリーンショット 2020-05-10 19.30.35.png

「このアプリは確認されていません」と出るので、「詳細を表示」を押して、安全ではないページに移動リンクを押してください。
スクリーンショット 2020-05-10 19.30.50.png

スクロールして許可してください。
スクリーンショット 2020-05-10 19.31.07.png

完成!

これで、フォーム送信をしたらGmailが飛ぶと思います。

補足情報

GASでメールを送信するClassについて

MailApp.sendEmailGmailApp.sendEmailの2つの方法が用意されていますが、
Gmail.Appの方がオプションが多くておすすめです。

  GmailApp.sendEmail(userMail,subject,body,option);

Gmail.Appを使用すると、cc/bccや、送信元のメールアドレスなど細かい設定が可能です。
Class GmailAppについて、くわしくはこちら)

但し、無料アカウントの場合、制限があるので注意です!

@isso_w さまから補足をいただきました!
無料版アカウントでは、GASのsendEmail関数が一日100件までしかメールを送れないという制限があるのでご注意ください。(2020年5月15日現在)。

フォームで入力された内容をグループメール宛にEメールで送信したいときの注意

内容を個人のメールアドレスではなくGoogle Groupsのアドレス(メーリングリスト)宛に通知したい場合は、Gmailの設定からエイリアスを登録する必要があります。

設定方法についてはこちらの記事を参考にしてください。
Google Groupのアドレスをエイリアス登録する方法

後編に続く!

後編ではこの内容に加え、Slack連携をします。
後編: フォームで入力された内容をIncoming Web Hookを使ってSlackで通知する

30
32
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
32