Google Calendar APIで祝日データを取得する
はじめに
Google Calendar APIにて祝日を取得したかったので、APIをたたくためのAPIキーが必要になりました。
手順まとめつつやってみようと思います。
プロジェクトを作成
- GCPにアクセス
- 新しいプロジェクトを作成します。 プロジェクト名、リソースを選択し、「作成」ボタンを押下します。 リソースは個人の場合は組織なしでいい場合が多いかと思います。Google Workspacesのアカウントだと組織が表示されます。

- プロジェクトが作成されるとこのような通知が表示されますので、「プロジェクトを選択」から作成したプロジェクトに切り替えてください。

APIを有効にし、APIキーを作成する
- 画面上部の検索インプットに「calendar」と入力してください。 候補に「Google Calendar API」が表示されるので、それを押下します。

- 「有効にする」ボタンを押下します。 この時点でプロジェクトが選択されていない場合は、プロジェクトの選択ダイアログが表示されます。 プロジェクトが間違っていないことも確認しておきます。

- 画面左側のメニューの「認証情報」を押下します。

- 「+認証情報を作成」からAPIキーを選択します。

- APIキーの作成画面が表示されたら、キー名を入力します。

- 制限が必要な場合は、設定します。WEBアプリから利用するので、ウェブサイトを選択しました。

- 「Add」から対象のWebサイトを追加します。

- APIの制限も設定します。今回はCalendarを使いたいので、フィルタに「calendar」と入力し、「Google Calendar API」にチェックします。

- 「作成」ボタンを押下します。

- 作成されるとキーが表示されます。これをコピーして使います。

OAuth同意画面
GoogleのAPIは、Googleアカウントの情報をサードパーティサービスに連携する場合に同意画面を表示し、ユーザーは確認し同意をしたうえで、Googleのデータを連携します。
例えば、Googleアカウントで他サービスにログインするような場合やGoogleカレンダーの自分の情報を別のアプリに連携する場合に同意画面が表示されます。
その同意画面を設定する必要があり、こんな警告まで出してくれるのですが、私の使用目的はユーザーの情報を連携するわけではなく、祝日を取得したいだけなので、スルーします。

APIキーを使ってcalendarから祝日を取得
Calendar APIにて祝日を取得するには、このエンドポイントに対してリクエストを送ることで取得できます。
https://www.googleapis.com/calendar/v3/calendars/${encodeURIComponent(calendarId)}/events
calendarIdとなっている部分は国などによって違います。
ここにクエリパラメータを追加してURLを作成し、リクエストします。
主なクエリパラメータ
- key: 作成したAPIキー
- timeMin:終了日の最小
- timeMax: 開始日の最大
- singleEvents: 1回限りの単一の予定か?
- orderBy: 順序、singleEventsがtrueの場合のみ指定可能
他のクエリパラメータはこちらにあります。
calendarId
例えばこのようなものになります。
ja.japanese.official#holiday@group.v.calendar.google.com
en.usa.official#holiday@group.v.calendar.google.com
こちらのcalendarIdもあるようですが、これで取得すると祝日ではないイベントも取得されてしまいます。(例えば節分)
ja.japanese#holiday@group.v.calendar.google.com
おわりに
今回のAPIを利用したカレンダーを作成しました。
よかったら使ってみてください。
