Typetalk ニュースレターを登録

Typetalk の最新情報、使い方や事例紹介などを毎月配信します。

ニュースレターの登録が完了しました。
ご登録ありがとうございます。

アンケート回収に便利!Google Formと連携するTypetalkボットをつくる

Typetalkのボット機能をご存知ですか?
Typetalk APIを利用して、欲しい機能をカスタマイズできる仕組みです。APIと聞いただけでなんだか難しそう…と感じる方もいるかもしれませんが、このブログでは誰でも設定できるように丁寧にお伝えします!

今回は、Google FormとTypetalkボットを連携する方法をご紹介。社内から意見を集めるためにアンケートを取るとき、こんなことはありませんか?

■リマインドのために、ある程度アンケート回答件数が集まったら知らせて欲しい
■素早く集計するために、回答してくれていることをリアルタイムに知りたい

Google Formを利用してアンケートを取る場合には、Apps Scriptと連携することでTypetalkでこのような通知を受け取れます。以下の手順に沿って設定してみましょう。

投稿したいTypetalkトピックにボットを作成する

Google Formからアンケート回答の通知をもらいたいトピックを開きます。誰に通知をしたいのかを明確にし、適切なメンバーがいるトピックを選びましょう。

トピック右上にある3点リーダー「⋯」からトピック設定を開き、ボットタブを開きましょう。新規追加ボタンをクリックし、項目を入力して作成します。

▼入力内容 ※ボットID、ボット名、説明は内容に沿って変更してください。

  • ボット ID
    google-form
  • ボット名
    google Form お知らせボット
  • 説明
    ボットに関する説明が必要な場合は入力します
  • APIスコープ
    「topic.post – メッセージを投稿したり、いいね!したりできます」にチェック
  • Outgoing Webhook
    チェック不要

Google Formでアンケートを作成し、スクリプトエディタを編集

Google Driveから新規にGoogle Formのアンケートを作成します。
アンケートの作成が完了したら、Google Formの右上3点リーダー「︙」にある「スクリプトエディタ」をクリックし、スクリプトエディタを起動します。

まずはスクリプトエディタに以下の80行のソースコードを貼り付けます。

// 集まった件数が一定数集まったら Typetalk に通知する設定をします。
// 初期設定 [] は 50 件集まるまで 10 件おきに Typetalk に通知します。
// 通知して欲しい件数をカンマ区切りで入力します。通知したくない場合は [] と空にします。
const notifyAnsweredCount = [10, 20, 30, 40, 50];

// 回答があるごとに Typetalk に通知するか設定します。
// true: 毎回通知する
// false: 通知しない
const notifyEachTime = false;

// Typetalk ボット設定
const typetalkToken = 'Typetalk Token';
const typetalkApiUrl = 'メッセージの取得と投稿のURL';

function myFunction(e) {
  const source = e.source;
  const response = e.response;

  const reachedAnsweredCountMessage = getReachedAnsweredCountMessage(source);
  const responseMessage = getResponseMessage(source, response);

  if (reachedAnsweredCountMessage !== null) {
    postToTypetalk(reachedAnsweredCountMessage);
  }

  if (responseMessage !== null) {
    postToTypetalk(responseMessage);
  }
}

function getReachedAnsweredCountMessage(source) {
  const answeredCount = source.getResponses().length;
  if (!notifyAnsweredCount.includes(answeredCount)) {
    return null;
  }

  const title = source.getTitle();
  const publishedUrl = source.getPublishedUrl();

  let s = '';
  s += `「${title}」に ${answeredCount} 件の回答が集まりました🎉\n`;
  s += publishedUrl;
  
  return s;
}

function getResponseMessage(source, response) {
  if (notifyEachTime !== true) {
    return null;
  }

  const email = response.getRespondentEmail();

  const title = source.getTitle();
  const publishedUrl = source.getPublishedUrl();
  const answeredCount = source.getResponses().length;

  let s = '';
  if (email.length > 0) {
    s += `${email} さんから`;
  }

  s += `「${title}」に回答がありました🙌 (${answeredCount} 件)\n`;
  s += publishedUrl;

  return s;
}

function postToTypetalk(message) {
  var formData = {
    "typetalkToken": typetalkToken,
    "message": message
  };     
  var options = {
    'method' : 'post',
    'payload' : formData
  };
  
  UrlFetchApp.fetch(typetalkApiUrl, options);  
}

ここからTypetalkのボットと連携するためにコードを編集していきます。

  1. 12行目の「Typetalk Token」部分にTypetalkで設定したボットのTypetalk Tokenを貼り付け
  2. 13行目の「メッセージの取得と投稿のURL」部分にTypetalkで設定したボットのメッセージの取得と投稿の URLを貼り付け
  3. 4行目の[10, 20, 30, 40, 50]部分には通知してほしいアンケート回答数を入力します。既に入力してある数字に追加・削除を行うことでお好みの回答数を設定できます。追加する場合は間まで区切りましょう。
  4. 回答があるたびに通知が欲しい場合には4行目の[ ]内を空にして、9行目の「false」部分をtrueにします。

ここまで編集したら、必ず「プロジェクトを保存」をクリックしましょう。

トリガーを設定する

スクリプトエディタのサイドバーから「トリガー」を選択し「トリガーを追加」ボタンをクリックします。以下の項目を入力して保存します。

  • 実行する関数を選択
    myFunction
  • 実行するデプロイを選択
    HEAD
  • イベントのソースを選択
    フォームから
  • イベントの種類を選択
    フォーム送信時

保存時には実行する Google アカウントに対してアクセス許可が Google から求められるため、許可します。

Google Form を公開してみましょう!

ここまできたら設定は全て完了です!作成したGoogle Formを社内に公開してみましょう。設定した件数の回答があるたびに、以下のようにボットによってトピックへ投稿が行われるはずです。

今回は、社内アンケートをとる機会が多い方におすすめのボット機能をご紹介しました。是非ボット機能を取り入れて、より便利にTypetalkをご利用ください。