はじめに
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との連携が簡単にできて本当に便利ですね!!