Googleフォームの回答をGoogle Apps ScriptでSlackに通知するための作業手順

公開日:2016/09/28 更新日:2016/09/28
Googleフォームの回答をGoogle Apps ScriptでSlackに通知するための作業手順のサムネイル

はじめに

Google Apps ScriptでSlackに通知するためのコードをメモします。ここでは、Googleフォームからの回答を受け取った時にSlackに通知するための作業手順を載せますが、ここのSlackへの通知を行う関数を好きなタイミングで呼び出すことで色々な場面で使えると思います。例えば、特定のメールがGmailに届いた時に呼び出せばそのメールの内容をSlackに通知できます。

できるようになることと前提

Googleフォームでの回答を受け取った時にSlackにその内容を通知できるようになります。 なお、今回は以下のように単純なGoogleフォームを用意しているとします。

google_form.png

このフォームがユーザによって送信された時に、以下のようにSlackにもこのフォームでユーザが入力した内容(お名前、メールアドレス、お問い合わせ)を通知するようにします。

on_slack-1024x119.png

作業の流れ

  • Slackのトークンを取得
  • スクリプト作成
  • Googleフォームの回答受付時にスクリプトが起動するようトリガを設定

Slackのトークンを取得

まずはじめにGoogle Apps ScriptからSlackへメッセージを投稿できるように、Slack API用のトークンを取得します。といっても非常に簡単です。WebブラウザでSlackにサインインした状態で、以下のURLにアクセスします。

Tokens for Testing and Development | Slack API

アクセスすると以下のような画面が表示されると思います。

create_token_ex-1024x537.png

上記のように、Team, Userが表示されていると思います。トークンを作成するには、上記の「Create token」をクリックするだけです。クリックすると以下のようにトークンが表示されます。

created_token_ex-1024x519.png

このトークンをGoogle Apps Script側で使用します。

スクリプト作成

以下のようにGoogleフォームの編集画面のメニューからスクリプトエディタを開き、そこにスクリプトを書きます。

launch_editor.png

スクリプトは以下のようになります。

// フォーム受付時に実行する関数
function onFormSubmit(e){
  var itemResponses = e.response.getItemResponses(); // 送信された各回答と対応する質問名が格納されます。
  
// itemResponses[i]にはフォームの上から順番に質問と回答のセットが格納されています。
// itemResponses[0]は一番はじめの質問である「お名前」とその回答に関する情報が入っています。
  var username = itemResponses[0].getResponse(); // お名前
  var useraddress = itemResponses[1].getResponse(); // メールアドレス
  var inquiry = itemResponses[2].getResponse(); // お問い合わせ

  sendToSlack( responseMessage(username, useraddress, inquiry) );

}

//Slackに送信
function sendToSlack( messages ){
  var url        = 'https://slack.com/api/chat.postMessage';
  var token      = 'xxxxxxxxxxxx'; //取得したtoken
  var channel    = '#channel_name'; // メッセージ投稿先のチャネル名
  var botname   = 'TEST BOT'; //BOTの名前
  var parse      = 'full';
  var icon_emoji = ':thumbsup:'; // Botのアイコンを指定
  // 指定できるiconは こちら(https://www.webpagefx.com/tools/emoji-cheat-sheet/)に載っています。

  var method     = 'post';

  var payload = {
      'token'      : token,
      'channel'    : channel,
      'text'       : messages,
      'username'   : botname,
      'parse'      : parse,
      'icon_emoji' : icon_emoji
  };

  var params = {
      'method' : method,
      'payload' : payload
  };

  //slackにポスト
  var response = UrlFetchApp.fetch(url, params);
}


// slackにメッセージとして送信したいテキストを作成する
function responseMessage(name, email, inquiry){
  var message = "新しいお問い合わせがありました " + name + " ( " + email + " )  \n" + "お問い合わせ内容: " + inquiry;
  return message;

}

FormAppによるフォームの集計と作成 (2/5) | Google Apps Scriptプログラミング [中級編]

Googleフォームの回答受付時にスクリプトが起動するようトリガを設定

あとは上記のスクリプトをGoogleフォームで回答を受け付けた時に起動するようトリガを設定します。 スクリプトエディタのメニューにある「リソース」→「現在のプロジェクトのトリガー」をクリックします。

trigger_for_project.png

後は以下のように、上記で作成したスクリプトである「onFormSubmit」、「フォームから」、「フォーム送信時」を選択して、「保存」します。

when_send_form.png

試しに適当にフォームを埋めて送信してみてSlackに通知されるか確認してみましょう。以上で完了です。

まとめ

Slackに通知できるようになることで、メールの見落としを減らしたりするだけでなく、メールを見る権限がない人にもこちらで指定した情報だけを共有できたりします。

関連記事

開発アプリ

nanolog.app

毎日の小さな出来事をなんでも記録して、ログとして残すためのライフログアプリです。