祝日判定でエラー
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カレンダの祝日カレンダを確認する.
- 設定メニュー(画面上部の歯車アイコン)→設定
- 他のカレンダーの設定 → 日本の祝日
- 祝日カレンダーのコンテンツ
プルダウンメニュー「祝日カレンダーのコンテンツ」を選ぶと下のカレンダー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がエラーになる.