【GAS】バン…リ公式サイトのスケジュールをGoogleカレンダーに登録するスクリプト作った

 バンドリ公式サイトのスケジュール、Googleカレンダーにしてくれんかなぁと思ってたけど一向にそうなる気配がないので、HTMLをパースしてGoogleカレンダーに登録するスクリプトを作った。ソースは↓に置いた。 https://bitbucket.org/zaki3mymy/gbpscheduler/src/master/
 雰囲気↓みたいな感じになった。

f:id:gassperi:20200705194011p:plain
予定が多すぎる

以下のリンクからGoogleカレンダーに追加可能だが、共有したカレンダーには色分けは反映されないらしい(そんな……)。
https://calendar.google.com/calendar?cid=NzAzZXZjaGgxbnFxdGg0NnVkdnFkaDM3NHNAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ

iCal形式は↓
https://calendar.google.com/calendar/ical/703evchh1nqqth46udvqdh374s%40group.calendar.google.com/public/basic.ics

とりあえず2020年内の予定(2020/07/05時点)は追加した。

実装まで

 バンドリ公式サイトのスケジュールは↓ bang-dream.com  クエリパラメータymで年月を指定すれば、その年月のスケジュールが表示されるっぽい。例えば?ym=202007みたいにすれば2020年7月のスケジュールが出る。ぬっ……っと表示されるのでjsで表示してるのかと思ったけど、各予定はHTML要素として予め存在してたので問題なさそうだった。
 実装はGoogle Apps Script(GAS)上で行った。月イチとかで定期実行できるようにすると良いかなと思ったし、以前GmailのパースをGASでやったのもあってそうした。パースはparserってライブラリ(https://github.com/tadaken3/html-parser-gas)を使う。
 GASってgitで管理とかできないのかなぁと思って調べてみたらclaspというCLIツールを見つけた。ローカルのソースをGASにpushしたりpullしたり……という様なツールらしい。以下の記事を参考にした。

qiita.com

といっても動作確認はGAS上でしかできないので、結局GASでスクリプト書いてローカルにclasp pullしてgit commitして……みたいな進め方になった。あと、予定重複して登録しちゃうのでそこの制御がめんどくて、まっさらなカレンダーに対してのみ登録する自分本意なスクリプトになった。月イチで定期実行とは……(こういうのやめな)。