Hama Blog

Hama Blog

主にtech関連の記録

connpassで自分が所属しているグループのイベントをGASを使ってSlackに定期的に通知する

概要

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 のプロジェクトのタイムゾーンに注意が必要。