
Google Formsの回答をChatworkに通知する
はじめに
Google Formsは標準で回答をスプレッドシートに記載する機能があります。
しかし、フォームを問い合わせなどに使用する場合は、回答があった際に使用しているチャットツールやメールに通知したいと思う時があると思います。
今回はGoogle Formsの回答をChatworkに通知する方法を紹介します。
Googleフォームのスクリプトエディタを開く
まずGoogleフォームの編集画面からGoogle Apps Scriptのエディタを開きます。
フォーム右上の縦の三点リーダーをクリックし、「スクリプト エディタ」をクリックします。
以降のコードはここに書いていきます。
フォームの回答を取得する
まずフォームの回答を取得します。
フォームの回答は送信時に起動する関数にe
として関数に渡されます。
そしてe
からgetItemResponses()
を使用して、質問順にデータを受け取ります。
function onSubmit(e) {
const formResponses = e.response.getItemResponses();
for (let i = 0; i < formResponses.length; i++) {
let response = formResponses[i];
// 質問のタイトル
let question = response.getItem().getTitle();
// 質問の回答
let answer = response.getResponse();
}
}
Chatworkに通知する
次にChatworkに投稿するコードを書いていきます。
APIトークンを取得していない場合は、ドキュメント(Chatwork APIへようこそ!)を参考に取得してください。
APIでパラメータにAPIトークン、投稿本文を設定して、https://api.chatwork.com/v2/rooms/[投稿する部屋のroomId]/messages
にポストすると投稿できます。
投稿する部屋のroomIdは投稿したい部屋のURLのrid以降の番号になります。
// 投稿する部屋のRoomId
const roomId = 00000;
// チャット本文
const body = "APIのtest";
// APIトークン
const apiToken = "";
const params = {
headers : {"X-ChatWorkToken": apiToken},
method : "post",
muteHttpExceptions: true,
payload : {"body": body}
};
// url生成
const url = "https://api.chatwork.com/v2/rooms/" + roomId + "/messages";
// chatworkに投稿
UrlFetchApp.fetch(url, params);
回答時に起動するトリガーを設定する
回答を投稿するスクリプトを作成したら、それをフォームの回答時に起動するようにします。
スクリプト編集画面の左メニューのトリガー
を選択、トリガーを追加
ボタンからトリガーを追加します。
起動させたい関数を選択し、イベントのソースを選択をフォームから
、イベントの種類を選択をフォーム送信時
に設定します。
まとめたコード
まとめると以下のようになります。
function postChatwork(roomId, body) {
/*
roomId: 投げる部屋のRoomId
body: チャット本文
*/
// APIトークン
const apiToken = "";
const params = {
headers : {"X-ChatWorkToken": apiToken},
method : "post",
muteHttpExceptions: true,
payload : {"body": body}
};
// url生成
const url = "https://api.chatwork.com/v2/rooms/" + roomId + "/messages";
// chatworkに投稿
let response = UrlFetchApp.fetch(url, params);
return response[1];
}
function onSubmit(e) {
const formResponses = e.response.getItemResponses();
let message = "フォームに回答がありました。\n"
for (let i = 0; i < formResponses.length; i++) {
let response = formResponses[i];
// 質問のタイトル
let question = response.getItem().getTitle();
// 質問の回答
let answer = response.getResponse();
message += `質問: ${question}\n回答: ${answer}\n`
}
const roomId = 00000;
postChatwork(roomId, message);
}
(おまけ) Gmailでメールを送信する
Gmailで送信するにはGmailApp.sendEmail
を使うと簡単に送信できます。
// 送信先アドレス
const to = "";
const subject = "メールタイトル";
const body = "メール本文";
GmailApp.sendEmail(to, subject, body);
参考記事
- Google Apps Script - Forms Service
- Chatwork APIへようこそ!