LoginSignup
2
4

More than 5 years have passed since last update.

GoogleFormの送信をSlackへ通知!それとはまりどころ

Posted at

GoogleFormを触る機会があったので、Slack通知のGASをまとめました。
大文字で記した変数に必要な値(トークンやチャンネル名)を渡せばコピペで動きます。

フォームで送信された内容のオブジェクトをgetResponseObjectで生成し、文字列としてSlackに投稿します。内容は必要に応じていじってください。

GAS

function getResponseObject(e) {
  if (!e) { return false; }
  var obj = {};
  var responses = e.response.getItemResponses();
  for (var i = 0; i < responses.length; i++) {
    var data = responses[i];
    var key = data.getItem().getTitle();
    var val = data.getResponse();
    obj[key] = val;
  }
  return obj;
} 

function sendToSlack(e) {
  var url = 'https://slack.com/api/chat.postMessage';
  UrlFetchApp.fetch(url, {
    method: 'POST',
    payload: {
      token: SLACK_TOKEN,
      channel: SLACK_CHANNEL,
      username: SLACK_BOTNAME || 'TestBot',
      text: JSON.stringify(getResponseObject(e)) || 'hello, world.',
      parse: 'full',
      icon_emoji: SLACK_ICON || ':ok_woman:'
    }
  });
}

GoogleFormEvent

Kobito.0UHtZx.png

はまりどころ

送信時にSlackに投稿させるためには、今回の場合sendToSlackをトリガーに設定する。
登録したトリガーは図のように確認ができる。

Kobito.tCkz42.png

ただ、ここで設定したトリガーは他人と共有されない。
そのため、他の人が設定したトリガーがここに表示されるようなことはないし、sendToSlackを別の人がトリガーとして設定していた場合は何度も呼ばれることになるが、なかなか気付きにくい。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4