AtCoderの開催予定をGoogleカレンダーに自動で追加する
Google Apps Script(GAS)でAtCoderのサイトからコンテストの開催予定を取得して、Googleカレンダーに自動で追加するスクリプトを紹介します。
目次
概要
AtCoderのサイトからコンテストの開催予定を取得して、Googleカレンダーに自動で追加するスクリプトです。
すでに同様のコンテストがGoogleカレンダーに登録されている場合は、重複して登録されないようになっています。
Githubのレポジトリは↓。
https://github.com/amanekk/atcoder-schedule
利用方法
1. claspを導入
claspとは、ローカルでGoogle Apps Script(GAS)のソースを管理するためのCLIツールです。 以下のコマンドで導入することができます。
npm install -g @google/clasp
2. Google Drive上でGASのプロジェクトを作成して、scriptIDをルート下の.clasp.jsonに記載する。
Google Drive上のGASプロジェクトとローカルのフォルダを紐づけるために、ルート下に以下のように.clasp.jsonを作成します。
{
"scriptId":"************",
"rootDir": "src"
}
scriptIDは、Google Drive上でGASのプロジェクトの設定から確認できます。
3. Calendar IDを取得して、src/config_json.htmlに記載
AtCoderの開催予定を追加したいGoogleカレンダーのCalendar IDを以下のようにsrc/config_json.htmlに記載します。
GASの仕様としてJSONファイルを読み込むのには手間がかかるので、代わりにHTMLファイルを作成し、その中にJSONの書式でGoogle Caledar IDを記載して、それを読み込むようにしています。
{
"calendar_id": "************"
}
Calendar IDは、Googleカレンダーの設定画面から確認することができます。
4. GASのプロジェクトにファイルをpush
clasp login
clasp push
上記のコマンドで、/src以下のファイルがGoogle Drive上のGASプロジェクトにアップロードされます。
5. デプロイし、get_atcoder_schedule.tsのmain関数に時間によるトリガーを設定する。
Google Drive上で本GASプロジェクトのデプロイを行なったのち、適宜トリガーを設定すると、設定した時間ごとに勝手に実行されるようになります。