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

はじめに

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

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

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

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

作業の流れ

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


Slackのトークンを取得

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

Tokens for Testing and Development | Slack API


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

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

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

スクリプト作成

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

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

// フォーム受付時に実行する関数
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は こちら(http://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

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


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

まとめ

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

SPONSORED LINK

この投稿へのコメント

コメントはありません。

コメントを残す

メールアドレスが公開されることはありません。

この投稿へのトラックバック

  1. […] 様々なアプリとの連携機能が強力なチャットアプリであるSlackですが、最近日本語版が発表され、日本語サポートも開始されました。ここではGoogle Apps ScriptでSlackにメッセージを投稿するための手順をメモします。なお、すでにGoogleフォームの回答をGoogle Apps ScriptでSlackに通知するための作業手順でGoogle Apps Scriptを使ってGoogleフォームの回答を通知させるための手順をメモしていますが、Slack側の設定が少し変わったのと、もっと基本的な部分を以降で説明します。 […]

トラックバック URL