見出し画像

Slackにnoteボットを作った話

研究室で自分たちの活動を発信していくことになりました。
自身の活動をそれぞれのアカウントで記事を作成し、研究室マガジンに追加することでまとめています。

これらの記事を研究室内で共有するため、記事がマガジンに追加されたらSlackに通知するボットを作りました。

マガジンに記事が追加されたことを取得する

noteでは、RSSに対応しています。URLの末尾に /rss をつけることで取得することができます。今回では、研究室マガジンのURLの末尾に付けました。

Google Apps Script

RSSを使って取得した情報をGoogleスプレッドシートで管理します。
スプレッドシートをデータベースとして活用できるので、とても便利です。そして、Google Apps Script(以下、GAS)を使ってスプレッドシートに書き込まれた記事の内容をSlackに通知します。

Slackに通知する

SlackではWebhookというアプリケーションを使ってリアルタイムにメッセージを通知します。今回はWebhookの設定については割愛します。

実装

Slackに通知する関数以外の実装は以下の記事を参考に作成しました。
とても参考になりました、ありがとうございます。

Slackに通知する部分ですが、以下のように設計します。
自身で設定する部分に関して簡単に説明します。
・url: WebhookのURL
・channel: 投稿先のチャンネル名
・username: ボット名
・text: 投稿内容(別の関数で構成しました。)
このようにJSON形式にまとめることで通知できます。
メインの関数内に、sendToSlack(body, "channel名")を入れることで実行できます。

function sendToSlack(body, channel) {
 var url = "Webhook のURL";
 var data = { 
   "channel" : channel, 
   "username" : "note通知 Bot", 
   "text" : body, 
   "icon_emoji" : ":date: ", 
   "unfurl_links": true
 };
 var payload = JSON.stringify(data);
 var options = {
   "method" : "POST",
   "contentType" : "application/json",
   "payload" : payload
 };
 var response = UrlFetchApp.fetch(url, options);
}

GASのトリガー機能を使って記事の投稿を探知し、Slackに通知します。

完成形

実際に記事を投稿すると、ボットが記事を投稿したことを教えてくれます。
これで、記事が投稿されたことがわかるので便利になりました!

スクリーンショット 2020-06-20 23.38.16

これで他の人の記事に気づけるようになりました!

この記事が気に入ったらサポートをしてみませんか?