アンケートや申し込みフォームをGoogle Formで作った場合に、投稿があったらSlackに通知したい場合の設定について書いておく。メールでの通知は普通にGoogle Formからできるので、Slackに流したい場合に。
Add an app or integration
からIncoming WebHooks
を選び、Add Configiration
ボタンを押す。Add Incoming WebHooks Integration
ボタンを押す。Webhook URL
をコピーして控えておく。必要に応じてCustomize Name
やCustomize Icon
の設定をして保存しておく。送信
ボタンの右隣のメニューアイコンを押す。スクリプトエディタ
を開く。コード.gs
の内容に以下の内容を貼り付ける
_formatResponse
関数で文字列連結する。_sendToSlack
関数の中。所定のフォーマットに従ってメッセージを組み立て、Slackに投稿している。message attachments
を使っている。var SLACK_URL = 'https://hooks.slack.com/services/xxxxxxxx'; // 控えておいたWebhook URLに変更してください
var CHANNEL = '#hook-test'; // 投稿したいChannelの名前を入れてください
var USERNAME = 'Google Form'; // 何の名前でSlackに投稿するか設定してください
function onSubmit(e) {
var itemResponses = e.response.getItemResponses();
var fields = [];
for (var i = 0; i < itemResponses.length; i++) {
var itemResponse = itemResponses[i];
fields.push({
title: itemResponse.getItem().getTitle(),
value: _formatResponse(itemResponse.getResponse())
});
}
_sendToSlack(SLACK_URL, CHANNEL, USERNAME, fields);
}
function _formatResponse(response) {
if (Array.isArray(response)) {
response = response.join(', ');
}
return response;
}
function _sendToSlack(url, channel, username, fields) {
var payload = JSON.stringify({
channel: channel,
username: username,
attachments: [{
fallback: 'フォーム投稿されました',
color: '#1487C3', // 好きな色に変更してください
fields: fields,
mrkdwn_in: ['fields']
}]
});
UrlFetchApp.fetch(url, {
method: 'post',
contentType: 'application/json',
payload: payload
});
}
コード.gs現在のプロジェクトのトリガー
を押す。新しいプロジェクト名の入力を促されるので、適当に入力してOK
ボタンを押す。トリガーが設定されていません。今すぐ追加するにはここをクリックしてください。
をクリックする。「実行」にはonSubmit
を、フォームから
フォーム送信時
をそれぞれ選択して、保存
ボタンを押す。保存
を押すと外部(今の場合、Slack)にデータを送信してよいかの許可を求めるダイアログが表示されるので、許可しておく。