祝日の一覧が欲しいなと思った時にGoogle Calendarから取得する方法を調べたので
まとめておきたいと思います。
GolangでGoogle Calender APIを使って取得します。
はじめに
google calender api ドキュメント
にgolangで利用する時のクイックスタートが乗っているので、参考に進めていきます。
1. 作業ディレクトリの作成
$ mkdir google_calender
$ cd google_calender/
2. Google APIを利用するためのcredentialsを取得
「Enable the Google Calender API」をクリックして進むとキー情報が書いてあるcredenrial.jsonがダウンロードできるので、作業ディレクトリに置きます。
3. 必要なモジュールの追加
ドキュメントに従ってモジュールを追加していきます
$ go get -u google.golang.org/api/calendar/v3
$ go get -u golang.org/x/oauth2/google
4. 実行ファイル作成
$ touch quickstart.go
quickstart.go
githubにコードがあるので、コピペします。
mod初期コマンド
$ go mod init google_calender
ビルドします
$ go build
5. tokenの取得
この状態で実行するとURLが表示されるので、実行した状態でブラウザにコピペして利用を許可します。
$ go run quickstart.go
https://accounts.google.com/o/oauth2/auth...
利用許可を進めていくと最後に「このコードをコピーしてアプリケーションに貼り付けてください」と表示されるので、先ほどの実行した状態のコンソールにコピペします。
成功すると「token.json」というファイルが出来ていると思います。
ここまででquickstartを実行する準備が整いました。
6. 祝日を取得するようにコードを修正する
quickstartのままだと利用許可したアカウントのカレンダーに登録されている予定を取得するようになっています。
これを祝日が取得できるカレンダーから取得するようにします。
quickstartで使用されている
events, err := srv.Events.List("primary")
のドキュメントを見ると
golang google api doc
パラメータでcalender idを渡せるようです。
※primaryはアカウントのプライマリカレンダー
調べた所、日本の祝日用のcalender idが
ja.japanese#holiday@group.v.calendar.google.com
こちらになるようです。
先ほどのL.109のcalender idを書き換えます。
events, err := srv.Events.List("ja.japanese#holiday@group.v.calendar.google.com")
7. 実行して祝日のリストを取得する
実行します
$ go run quickstart.go
Upcoming events:
建国記念の日 (2021-02-11)
天皇誕生日 (2021-02-23)
春分の日 (2021-03-20)
昭和の日 (2021-04-29)
憲法記念日 (2021-05-03)
みどりの日 (2021-05-04)
こどもの日 (2021-05-05)
海の日 (2021-07-22)
体育の日 (2021-07-23)
山の日 (2021-08-08)
取れました!!!!
quickstartでは現在時刻から10件取得するようになっているので、L.110のパラメータを修正すれば期間や件数を変更できます。
おわりに
簡単に祝日の一覧を取得する事ができました!!!!!