Slack でチャンネルが作成されたら通知する

いつの間にか新しいチャンネルがつくられていること、ままある。

仕組み

  • Slack の Events API (Event Subscriptions) で channel_created を GAS に通知する
  • GAS で Slack に投稿する

同じやりかたで emoji を通知したりもできる。

GAS のスクリプト

var webhookUrl = 'https://hooks.slack.com/services/xxxxx/xxxxx/xxxxx';

function doPost(e) {
  var data = JSON.parse(e.postData.getDataAsString());
  
  if (data.type === 'url_verification') {
    var content = { 'challenge': data.challenge };
    return ContentService.createTextOutput(JSON.stringify(content)).setMimeType(ContentService.MimeType.JSON);
  }
  
  if (data.type === 'event_callback' && data.event.type === 'channel_created') {
    var payload = {
      'text': 'New channel <#' + data.event.channel.id + '> was created!'
    };
    UrlFetchApp.fetch(webhookUrl, {
      'method': 'post',
      'contentType': 'application/json',
      'payload': JSON.stringify(payload)
    });
  }
}