Googleカレンダーから日本の祝日を取得できるカレンダーID

  • 投稿日:
  • by
  • カテゴリ:

仕様が変更されたんですかね。(末尾に追記あり)


ちょっとGASで祝日考慮する日付計算がしたくて、ググると以下のようなページがたくさん見つかります。

GoogleAppsScriptで日本の祝日を取得する

 

で、例外なく以下のようなコードが出てきます。

var cal = CalendarApp.getCalendarById(ja.japanese#holiday@group.v.calendar.google.com);

実行してみるとGoogleカレンダーのOAuth認証が出るもののcalはnullになります。

よくわからないのは、nullになる場合の回避方が出てこないことです。

仕方がないので自己解決しました。

自分のGoogleカレンダーにアクセスして、おすすめから日本の祝日を追加して、カレンダーIDを確認しました。

カレンダー ID: japanese__ja@holiday.calendar.google.com

とりあえず手元ではIDをこれに変更したら動作しましたが、永続的に動作させるのは大変そうです。

 

ジンルイのコヨミは1万年以上の歴史があるはずですが、いまだにしっくりこない感じですから永遠のテーマなのだろうとは思いますが。

 

(以下追記・永い言い訳)

 

作ったGASのスクリプトが本番環境で動作しないので調べたところ、

ja.japanese#holiday@group.v.calendar.google.com

で動作しました。というか、このIDは

OAuth認証するGoogleアカウントのGoogleカレンダーに登録済みのカレンダーIDでなければならない

ということのようですね。グローバルなカレンダーにアクセスするわけではなく、あくまでもGoogleカレンダーのユーザが参照できるカレンダーをIDで引っ張ることができるということのようで。

で、

日本のGoogleカレンダーユーザーはデフォルトで

日本の祝日カレンダーが登録済み

という動作のようですが、はるか昔からGoogleカレンダーを利用していたためか、私のGoogleカレンダーには、

japanese__ja@holiday.calendar.google.com

が登録されており、

ja.japanese#holiday@group.v.calendar.google.com

は登録されていないという状況でした。登録を解除してから改めて登録しなおすと、

ja.japanese#holiday@group.v.calendar.google.com

になりました。

よくわかりませんが、古株さんが自分のアカウントでGoogleカレンダーを使うときには、テスト用の新し目のアカウントに切り替えるのが良い気がしました。