祝日判定でエラー

2024-09-22

はじめに

Google Apps Scriptが休日判定箇所でエラーになった.こんなエラーが出た.

TypeError: Cannot read properties of null (reading 'getEventsForDay')

対処方法をまとめた.ちなみに,それまでは動いていたのに,突然動かなくなった.

結論

  • Google Apps Scriptで指定した祝日カレンダとGoogleカレンダの祝日カレンダが異なる.
  • 祝日カレンダは二つある.
    • ja.japanese.official#holiday@group.v.calendar.google.com
    • ja.japanese#holiday@group.v.calendar.google.com
  • 祝日カレンダをGoogle Apps ScriptとGoogleカレンダで合わせる.
  • 突然動かなくなったのは,Googleカレンダの祝日カレンダを変えたから.

Google Apps Script

当該日が祝日かどうかを判定している以下のスクリプトでエラー発生.

function myFunction() {
  CalendarApp.getCalendarById('ja.japanese.official#holiday@group.v.calendar.google.com').getEventsForDay(new Date());
}

Googleカレンダ

Googleカレンダの祝日カレンダを確認する.

  1. 設定メニュー(画面上部の歯車アイコン)→設定

設定メニュー

  1. 他のカレンダーの設定 → 日本の祝日

日本の祝日

  1. 祝日カレンダーのコンテンツ

プルダウンメニュー「祝日カレンダーのコンテンツ」を選ぶと下のカレンダーIDが変わる.

祝日およびその他の休日
ja.japanese#holiday@group.v.calendar.google.com
祝日のみ
ja.japanese.official#holiday@group.v.calendar.google.com

祝日カレンダ

今回の場合,Google Apps Scriptがja.japanese.official#holiday@group.v.calendar.google.comなので,Googleカレンダもja.japanese.official#holiday@group.v.calendar.google.comにする.

余談

以前はja.japanese#holiday@group.v.calendar.google.comだけだった.ja.japanese#holiday@group.v.calendar.google.comに節分や七夕が入るようになり,本来の祝日はja.japanese.official#holiday@group.v.calendar.google.comになった(ようだ).

Google Apps Scriptで参照している祝日カレンダのことを忘れてGoogleカレンダを変えると,Google Apps Scriptがエラーになる.