🐡
キャンペーンが開始されたらdiscordに通知
はじめに
SNSを見ていたらお得なキャンペーン情報を見かけるが、当日になったら確実に忘れている。後各種payの還元情報がいい例だけど、どれだけ使ったかの集計が面倒なので、
- Notionにキャンペーン情報のDBを作成
- 開始日になったらdiscordに通知される
- 通知されたら手動でお気に入り登録
- 終了日になったら、または上限を使い切ったらお気に入りを外す
という運用を行う。
今回は開始日になったらdiscord通知する処理を作成した。
code
notion.gs
const NOTION = {
token: '<token>',
db: {
campaign: '<id>',
},
};
function getCampaignList(){
return Notion.initManager(NOTION.token).query(NOTION.db.campaign);
}
main.gs
function noticeCampaign(){
const alertList = getCampaignList().reduce((alertList, json) => {
const startDate = json.properties['開始日'].date?.start;
if(startDate && dayjs.dayjs(startDate).isSame(dayjs.dayjs(), 'days')) alertList.push(`イベント開始 ${json.properties['名前'].title.map(t => t.plain_text).join('\n')}`);
return alertList;
}, []);
if(!alertList.length) return;
discord(
DISCORD.webhook.notice,
alertList.join('\n'),
true
);
}
discord.gs
const DISCORD = {
id : '<id>',
webhook : {
notice : '<token>',
},
};
function discord(webhook, text, mentionFlg){
const payload = {
username: 'notice',
content: (mentionFlg) ? `<@${DISCORD.id}>\n${text}` : text,
};
UrlFetchApp.fetch(
webhook,
{
method: 'post',
contentType: 'application/json',
payload: JSON.stringify(payload),
}
);
}
Discussion