Google Calendar APIで祝日データを取得する

Google Calendar APIで祝日データを取得する


はじめに

Google Calendar APIにて祝日を取得したかったので、APIをたたくためのAPIキーが必要になりました。

手順まとめつつやってみようと思います。

プロジェクトを作成

  1. GCPにアクセス

  1. 新しいプロジェクトを作成します。 プロジェクト名、リソースを選択し、「作成」ボタンを押下します。 リソースは個人の場合は組織なしでいい場合が多いかと思います。Google Workspacesのアカウントだと組織が表示されます。

alt text

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

alt text

APIを有効にし、APIキーを作成する

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

alt text

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

alt text

  1. 画面左側のメニューの「認証情報」を押下します。 alt text
  2. 「+認証情報を作成」からAPIキーを選択します。 alt text
  3. APIキーの作成画面が表示されたら、キー名を入力します。 alt text
  4. 制限が必要な場合は、設定します。WEBアプリから利用するので、ウェブサイトを選択しました。 alt text
  5. 「Add」から対象のWebサイトを追加します。 alt text alt text
  6. APIの制限も設定します。今回はCalendarを使いたいので、フィルタに「calendar」と入力し、「Google Calendar API」にチェックします。 alt text
  7. 「作成」ボタンを押下します。 alt text
  8. 作成されるとキーが表示されます。これをコピーして使います。 alt text

OAuth同意画面

GoogleのAPIは、Googleアカウントの情報をサードパーティサービスに連携する場合に同意画面を表示し、ユーザーは確認し同意をしたうえで、Googleのデータを連携します。

例えば、Googleアカウントで他サービスにログインするような場合やGoogleカレンダーの自分の情報を別のアプリに連携する場合に同意画面が表示されます。

その同意画面を設定する必要があり、こんな警告まで出してくれるのですが、私の使用目的はユーザーの情報を連携するわけではなく、祝日を取得したいだけなので、スルーします。

alt text

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を利用したカレンダーを作成しました。

よかったら使ってみてください。