Google Forms経由のお問い合わせで特定のメールアドレスからのSlack通知を送信しない方法

弊社はGoogle Formsを利用して、サイトからのお問い合わせを受け取り、CVを把握するためSlackへ通知を送るようGASにて設定しています。
しかし運用を続けているうちに、定期的に来る営業メールの通知に埋もれて見づらいと感じていました。

そこで特定のメールアドレスからの通知を受け取らないように、GASのSlack通知コードのカスタマイズを行いました。

※通知を受け取らないようにするだけで、お問い合わせ内容自体は今まで通り収集可能です。
※あくまで手動で通知を管理する方法です。自動でbotをブロックしたり、不要な通知だと判別する機能ではありませんのでご了承ください。

以下の方に向けた内容となっています。

  • GASを利用してGoogle Forms の通知をSlackに送っている方
  • 特定のメールアドレスからのお問い合わせ通知を受け取らないようにしたい方
  • お問い合わせフォーム内でメールアドレスを収集している方

カスタマイズしたコード

こちらのサイト【超簡単】Google フォームで送信した内容をSlackに飛ばす方法を参考に設定しています。

function autoSlack(e) {
//すべての質問と回答を取得する
let itemResponses = e.response.getItemResponses();
//個々の質問と回答を格納するための空配列を宣言する
let questionAndAnswers = [];
//for文(ループ)で変数itemResponsesから個々の質問と回答を取得する
for(let i = 0; i < itemResponses.length; i++) {
//質問のタイトルを取得する
let questionTitle = itemResponses[i].getItem().getTitle();
//回答を取得する
let answer = itemResponses[i].getResponse();
//未回答の質問かどうかで送信文章を調整する
if(!answer) {
questionAndAnswers.push(questionTitle + ": 未回答");
} else {
questionAndAnswers.push("*≪" + questionTitle + "≫*\n" + answer + "\n");
}
}
//Slackの宛先 (チャンネル)
let url = "SlackのIncoming Webhook URL";
//Slackの本文
let body = "\n本体サイトからお問い合わせがありました\n"
+ "\n"
//一次元配列questionAndAnswersに対してjoinメソッドを使って文字列を作成する
//区切り文字は改行"\n"
+ questionAndAnswers.join("\n");
let mail = itemResponses[メールを収集しているフォーム項目のインデックス番号].getResponse();
//Slackを送信する   
  const notSent = ['送信しないメールアドレス'];
  if(notSent.includes(mail) === false){
    sendSlack(url, body);
  }
 }
function sendSlack(url, body) {
let data = {
"text": body
}
let options = {
"method" : "post",
"contentType": "application/json",
"payload" : JSON.stringify(data)
};
UrlFetchApp.fetch(url, options);
}

カスタマイズした箇所は以下です。

function autoSlack(e) {
~ 省略 ~
let mail = itemResponses[メールを収集しているフォーム項目のインデックス番号].getResponse();
// Slackを送信する
  const notSent = ['送信しないメールアドレス'];
  if(notSent.includes(mail) === false){
    sendSlack(url, body);
  }
}

次項から各コードの解説を行います。

①メールアドレス項目の内容を取得する

let mail = itemResponses[メールを収集しているフォーム項目のインデックス番号].getResponse();

この箇所で、メールアドレスの回答を取得します。 インデックス番号は0から始まるため、数え間違いに注意してください。
例として、弊社フォームの場合は3番目にメールアドレスを収集しているため、let mail = itemResponses[2].getResponse();のようになります。

forms_answer_ss01.jpg

②メールが特定のメールアドレスと一致しない時だけ通知を送信する

const notSent = ['送信しないメールアドレス'];
if(notSent.includes(mail) === false){
  sendSlack(url, body);
} 

'送信しないメールアドレス'に特定のメールアドレスを入れます。 お問い合わせ以外で定期的に来るメールアドレスを判別する際は、Google Formsの「回答」からプルダウンでメールアドレスの回答を絞り込み、件数を確認することをおすすめします。

forms_answer_ss.jpg

複数除外したい場合

const notSent = ['送信しないメールアドレス','送信しないメールアドレス','送信しないメールアドレス'];

,(カンマ)区切りで繋げて指定します。

まとめ

botやスパムはreCAPTCHAなどで対策できますが、営業メールは代行業者が行う場合もあり判別が難しいです。
なるべくサイトへのお問い合わせとは別々に管理することで、メール対応業務の効率化を図る事ができるでしょう。

Webサイト制作に関することなら、お気軽にご相談くださいませ

弊社シロクロでは、Web制作に関わる業務やコンテンツマーケティングなどの支援しております。お悩みやご質問がありましたら、お気軽にご相談ください。

お問い合わせはこちら

関連記事