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のボットと連携するためにコードを編集していきます。
- 12行目の「Typetalk Token」部分にTypetalkで設定したボットのTypetalk Tokenを貼り付け
- 13行目の「メッセージの取得と投稿のURL」部分にTypetalkで設定したボットのメッセージの取得と投稿の URLを貼り付け
- 4行目の[10, 20, 30, 40, 50]部分には通知してほしいアンケート回答数を入力します。既に入力してある数字に追加・削除を行うことでお好みの回答数を設定できます。追加する場合は間まで区切りましょう。
- 回答があるたびに通知が欲しい場合には4行目の[ ]内を空にして、9行目の「false」部分をtrueにします。
ここまで編集したら、必ず「プロジェクトを保存」をクリックしましょう。
トリガーを設定する
スクリプトエディタのサイドバーから「トリガー」を選択し「トリガーを追加」ボタンをクリックします。以下の項目を入力して保存します。
- 実行する関数を選択
myFunction - 実行するデプロイを選択
HEAD - イベントのソースを選択
フォームから - イベントの種類を選択
フォーム送信時
保存時には実行する Google アカウントに対してアクセス許可が Google から求められるため、許可します。
Google Form を公開してみましょう!
ここまできたら設定は全て完了です!作成したGoogle Formを社内に公開してみましょう。設定した件数の回答があるたびに、以下のようにボットによってトピックへ投稿が行われるはずです。
今回は、社内アンケートをとる機会が多い方におすすめのボット機能をご紹介しました。是非ボット機能を取り入れて、より便利にTypetalkをご利用ください。