LoginSignup
1
2

More than 3 years have passed since last update.

GASでSlackボット作成

Last updated at Posted at 2019-08-04

Slack APIを使いこなす

Documents

postMessage

messageをSlackチャンネルにポストする関数

var postMessage    = "https://slack.com/api/chat.postMessage";
var app_auth_token = "xoxb-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
var channel        = "#xxxxxxxx";
var message        = "It is sample message!!";

function postMessageToSlackChannel(app_auth_token, channel, message){

  const params = {
    "token" : app_auth_token,
    "channel" : channel,
    "text" : message
  };
  const payload = JSON.stringify(params);

  const options = {
    "method"      : "post",
    "contentType" : "application/json",
    "headers"     : {"Authorization" : "Bearer "+ app_auth_token},
    "payload"     : payload
  };

files.upload

fileをSlackチャンネルにポストする関数
postMessageと違ってoptionsの指定channelが複数形になっていないと指定されたチャンネルにアップロードされなくてつまづいた。
仕様書はよく読みましょうということ。

※今回はSpreadSheet上のファイルをアップロードする。

var postMessage    = "https://slack.com/api/files.upload";
var app_auth_token = "xoxb-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
var channel        = "#xxxxxxxx";
var wsName = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート名");
var charts = wsName.getCharts();
var filename = 'chart.png'
var file = charts[0].getBlob().getAs('image/png').setName(filename);

function uploadFileToSlackChannel(app_auth_token, channel, file){

  const payload = {
    "token"          : app_auth_token,
    "channels"       : channel,
    "file"           : file
  };

  const options = {
    "method"      : "post",
    "payload"     : payload
  };

  return UrlFetchApp.fetch(uploadFileUrl, options);
}
1
2
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
1
2