明日のゴミ収集対象をSlackに通知する
「明日は何のゴミ収集日だっけ?」で毎回迷うのをなくしたかったので、前日の夜にSlackに通知するようにした。
- slack通知用の公式ライブラリをインストール
yarn add @slack/webhook
- ゴミ収集日通知スクリプトを作成
// index.js
const slack = require('@slack/webhook')
const getGarbageTypes = (date) => {
const garbageTypes = []
d = new Date(date)
nth = Math.floor((d.getDate() + 6 ) / 7)
week = d.getDay()
switch (week) {
// 月曜, 木曜
case 1:
case 4:{
garbageTypes.push('- 可燃ごみ');
break;
}
// 土曜
case 6: {
garbageTypes.push('- 資源ごみ');
break;
}
}
// 第2, 第4金曜
if ((nth === 2 || nth === 4) && (week === 5)) {
garbageTypes.push('- 不燃ごみ')
}
return garbageTypes;
}
const notifySlack = async (header, text) => {
const SLACK_WEBHOOK_URL = process.env['SLACK_WEBHOOK_URL'] || ''
const webhook = new slack.IncomingWebhook(SLACK_WEBHOOK_URL)
await webhook.send({
blocks: [
{
type: 'header',
text: {
type: 'plain_text',
text: header,
emoji: true,
},
},
{
type: 'section',
fields: [
{
type: 'mrkdwn',
text: `\`\`\`${text}\`\`\``,
},
],
},
],
})
}
(async () => {
const date = new Date()
date.setDate(date.getDate() + 1)
const garbages = getGarbageTypes(date.toString())
if (garbages.length > 0) {
const header = '明日のゴミ収集は'
const text = `${garbages.join('\n')}`
await notifySlack(header, text)
}
})()
上記スクリプトでは例として大田区池上1丁目の収集曜日を設定している。
SLACK_WEBHOOK_URL
環境変数を設定し、cronで毎日定期実行するようにすればOK。
node index.js
これでもう翌日のゴミ収集内容に迷わない。