LoginSignup
3
4

More than 3 years have passed since last update.

GolangでGoogle Calender APIを使って日本の祝日情報を取得する

Last updated at Posted at 2021-01-23

祝日の一覧が欲しいなと思った時にGoogle Calendarから取得する方法を調べたので
まとめておきたいと思います。
GolangでGoogle Calender APIを使って取得します。

はじめに

google calender api ドキュメント
にgolangで利用する時のクイックスタートが乗っているので、参考に進めていきます。

1. 作業ディレクトリの作成

$ mkdir google_calender
$ cd google_calender/

2. Google APIを利用するためのcredentialsを取得

スクリーンショット 2021-01-22 21.18.58.png
「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で使用されている

L.109
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を書き換えます。

L.109
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のパラメータを修正すれば期間や件数を変更できます。

おわりに

簡単に祝日の一覧を取得する事ができました!!!!!

3
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4