概要
connpass でいくつかのグループに所属しているのだが、グループによっては毎日のようにイベントを開催していて、開催通知的なメールが多いと、そんなに通知いらないな、、、と思うことがある。
かといって通知をなくすのも嫌なので、直近1週間にあるイベントを週に1回 Slack に通知できるようにしてみた。
今回は Google Apps Script (GAS) と connpass API 1 を使ってみた。
※ connpass の API は会員登録不要で無料で使えます。
(2024/4/14追記)
※ 2024/5/23をもって、イベントサーチAPIの無料提供を廃止されるようです。
また、基本的には法人向けらしいです。個人でももしかしたら使えるかもしれないですが、2024/4/14時点で個人向けの料金は公表されていませんでした。
API を利用する場合は、リファレンスの注意書きにもあるように、robots.txt を遵守するよう注意してください。
> ※過度な検索やクローリングに対しては、アクセス制限を施す可能性があります。robots.txt を遵守してください。
成果物
こんな感じで、グループごとのイベントにまとめて通知される。
コードはこちら
設定手順
※ 今回は具体的なコードは紹介しません。成果物に記載したものを参照してください。
新しく Google Apps Script を作成する。(clasp でもいいと思う)
作成したばかりだと以下の関数が用意されているため、成果物に記載したコードに置き換える。
↓
Slack の Webhook URLと connpass の所属グループの series_id が必要なので、それぞれスクリプトプロパティに設定する。
↓
上記を設定すると、PropertiesService.getScriptProperties().getProperty('SLACK_WEBHOOK_URL');
みたいに GAS のコード上で取得することができる。
Slack の Webhook URL は、こちらから作成できる。
(他にも方法があるかもしれないが) connpass の所属グループの series_id の取得は少し面倒で、グループページの HTML ソースから
series
で検索して取得した。たとえば Findy さんの場合だと、グループページ (https://findy.connpass.com) にアクセスして、HTML ソースを見ると以下のように
series
(series_id) を取得できる。
ここまでできたら、実際に動かして Slack に通知することができる。
あとは定期実行できるようにするだけなので、トリガーを好きな時間に発火するように設定して完了。
↓
↓
その他
Slack のメッセージ内容は、Block Kit Builder を使うことで、プレビューしながら簡単に組み立てることができる。
connpass の API で取得できるイベント開催日時 (
started_at
) 等を Date オブジェクトを使ってフォーマットしているのだが、GAS のプロジェクトのタイムゾーンに注意が必要。