JavaScript
GoogleAppsScript
Slack

GoogleAppsScript(GAS)からSlackに画像を投稿する

More than 1 year has passed since last update.


はじめに

GoogleAppsScriptからSlackに画像を投稿する方法を調べたところ、良さそうなサンプルなどを見つけることができなかったので、いろいろ調べて作りました。

やりたかったことは、画像のURLを指定し、その画像をSlackに画像ファイルとして投稿することです。

URLを送るだけでは画像は表示されなかったので、ファイルとして投稿する必要があるようです。


コード


postImage.gs

var SLACK_TOKEN='hogehoge';

var image=UrlFetchApp.fetch('http://example.com/image.png').getBlob();
var data={
token:SLACK_TOKEN,
file:image,
channels:'random',
title:'image'
};
var option={
'method':'POST',
'payload':data
};

UrlFetchApp.fetch('https://slack.com/api/files.upload',option);


SLACK_TOKEN、画像のURLは適宜置き換えてください。


解説

var image=UrlFetchApp.fetch('http://example.com/image.png').getBlob();

この部分で、URLの画像を取得し、Blobオブジェクトを生成しています。

その下の行では、各プロパティーを設定しています。

ほかに設定可能なプロパティーは以下のページに記載してあります。

files.upload method | Slack

そして、以下の行でSlackに画像を投稿しています。

UrlFetchApp.fetch('https://slack.com/api/files.upload',option);


まとめ

Node.jsで動くサンプルなどはあったのですが、GASでURLを指定して画像を投稿するサンプルは見つけられませんでした。(調査不足だったらごめんなさい)

用途としてはサーバー監視サービスMackerelのグラフを定期的に投稿するbotなどが考えられます。

GASは他サービスやAPIとの連携が簡単にできて本当に便利ですね!!