【GAS】バン…リ公式サイトのスケジュールをGoogleカレンダーに登録するスクリプト作った
バンドリ公式サイトのスケジュール、Googleカレンダーにしてくれんかなぁと思ってたけど一向にそうなる気配がないので、HTMLをパースしてGoogleカレンダーに登録するスクリプトを作った。ソースは↓に置いた。
https://bitbucket.org/zaki3mymy/gbpscheduler/src/master/
雰囲気↓みたいな感じになった。
以下のリンクから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したり……という様なツールらしい。以下の記事を参考にした。
といっても動作確認はGAS上でしかできないので、結局GASでスクリプト書いてローカルにclasp pull
してgit commit
して……みたいな進め方になった。あと、予定重複して登録しちゃうのでそこの制御がめんどくて、まっさらなカレンダーに対してのみ登録する自分本意なスクリプトになった。月イチで定期実行とは……(こういうのやめな)。