これは何?
GoogleAppsScript(GAS)を使って祝日判定をするときに、Googleに用意されている「日本の祝日」カレンダーを利用することが多いです。という記事を書いていたのですが、2025年12月20日にコメントを頂き、仕様が変わっていることを知りました。変更後の内容に以下の記載を更新しました。
カレンダーの設定
GASを実行するアカウントでカレンダーを設定する
※「GASを実行するアカウントのカレンダー」というのがポイントです。
カレンダIDを入力
↓の画面で ja.japanese#holiday@group.v.calendar.google.com を入力する
コンテンツを選択
以下のように「自分のカレンダーに表示させたい祝日ごとにチェックを入れる」ような仕様に変わっていました。
↓試しに「祝日」と「その他の行事」の全てにチェックがある状態だとこうなりました。
↓「その他の行事」のチェックを外すとこうなります。
GASのコード
function getJapaneseHolidays() {
const calendarId = 'ja.japanese#holiday@group.v.calendar.google.com'
const holidayCalendar = CalendarApp.getCalendarById(calendarId);
const start = new Date(2026, 0, 1);
const end = new Date(2027, 0, 1);
const holidayEvents = holidayCalendar.getEvents(start, end);
const holidayNames = holidayEvents.map(holidayEvent => {
return `${Utilities.formatDate(holidayEvent.getStartTime(), "JST", "yyyy-MM-dd")} ${holidayEvent.getTitle()}`;
})
console.log(holidayNames);
}
[ '2026-01-01 元日',
'2026-01-02 銀行休業日',
'2026-01-03 銀行休業日',
'2026-01-12 成人の日',
'2026-02-03 節分',
'2026-02-11 建国記念の日',
'2026-02-23 天皇誕生日',
'2026-03-03 雛祭り',
'2026-03-20 春分の日',
'2026-04-29 昭和の日',
'2026-05-03 憲法記念日',
'2026-05-04 みどりの日',
'2026-05-05 こどもの日',
'2026-05-06 憲法記念日 振替休日',
'2026-05-10 母の日',
'2026-07-07 七夕',
'2026-07-20 海の日',
'2026-08-11 山の日',
'2026-09-21 敬老の日',
'2026-09-22 国民の休日',
'2026-09-23 秋分の日',
'2026-10-12 スポーツの日',
'2026-11-03 文化の日',
'2026-11-15 七五三',
'2026-11-23 勤労感謝の日',
'2026-12-25 クリスマス',
'2026-12-31 大晦日' ]
うん。これで取得できた!...と思ったでしょ?
よくわからないところ
取得はできたのですが、カレンダーの設定と、GASで取得できる情報が一致しませんでした。
↑ この状態でGASを実行しても上記の実行結果と同じなんですよね。(実運用上、雛祭り とか 七五三 は祝日判定に使わないことのほうが多いですよね)
解決策
Calendar Service を眺めたのですが、記載が見つけられませんでした。
AIに聞いたら getDescription() で取得できる文字列の中の「祝日」で判定するといいよ」って教えてもらったので、まずはこれでいいのかな。
const holidayNames = events.map(event => {
return `${Utilities.formatDate(event.getStartTime(), "JST", "yyyy-MM-dd")} | ${event.getTitle()} | ${event.getDescription()}}`;
})
[ '2026-01-01 | 元日 | 祝日}',
'2026-01-02 | 銀行休業日 | 祭日\n祭日を非表示にするには、Google カレンダーの [設定] > [日本の祝日] に移動してください}',
'2026-01-03 | 銀行休業日 | 祭日\n祭日を非表示にするには、Google カレンダーの [設定] > [日本の祝日] に移動してください}',
'2026-01-12 | 成人の日 | 祝日}',
'2026-02-03 | 節分 | 祭日\n祭日を非表示にするには、Google カレンダーの [設定] > [日本の祝日] に移動してください}',
'2026-02-11 | 建国記念の日 | 祝日}',
'2026-02-23 | 天皇誕生日 | 祝日}',
'2026-03-03 | 雛祭り | 祭日\n祭日を非表示にするには、Google カレンダーの [設定] > [日本の祝日] に移動してください}',
'2026-03-20 | 春分の日 | 祝日}',
'2026-04-29 | 昭和の日 | 祝日}',
'2026-05-03 | 憲法記念日 | 祝日}',
'2026-05-04 | みどりの日 | 祝日}',
'2026-05-05 | こどもの日 | 祝日}',
'2026-05-06 | 憲法記念日 振替休日 | 祝日}',
'2026-05-10 | 母の日 | 祭日\n祭日を非表示にするには、Google カレンダーの [設定] > [日本の祝日] に移動してください}',
'2026-07-07 | 七夕 | 祭日\n祭日を非表示にするには、Google カレンダーの [設定] > [日本の祝日] に移動してください}',
'2026-07-20 | 海の日 | 祝日}',
'2026-08-11 | 山の日 | 祝日}',
'2026-09-21 | 敬老の日 | 祝日}',
'2026-09-22 | 国民の休日 | 祝日}',
'2026-09-23 | 秋分の日 | 祝日}',
'2026-10-12 | スポーツの日 | 祝日}',
'2026-11-03 | 文化の日 | 祝日}',
'2026-11-15 | 七五三 | 祭日\n祭日を非表示にするには、Google カレンダーの [設定] > [日本の祝日] に移動してください}',
'2026-11-23 | 勤労感謝の日 | 祝日}',
'2026-12-25 | クリスマス | 祭日\n祭日を非表示にするには、Google カレンダーの [設定] > [日本の祝日] に移動してください}',
'2026-12-31 | 大晦日 | 祭日\n祭日を非表示にするには、Google カレンダーの [設定] > [日本の祝日] に移動してください}' ]
↑ descriptionの中に「祝日」と「祭日」の区別があるようです。これを利用して↓
function getJapaneseHolidays() {
const calendarId = 'ja.japanese#holiday@group.v.calendar.google.com';
const holidayCalendar = CalendarApp.getCalendarById(calendarId);
const start = new Date(2026, 0, 1);
const end = new Date(2027, 0, 1);
const events = holidayCalendar.getEvents(start, end);
//フィルタリングして祝日のみを抽出
const holidayNames = events.filter(event => {
const desc = event.getDescription();
return desc.includes("祝日");
}).map(event => {
return `${Utilities.formatDate(event.getStartTime(), "JST", "yyyy-MM-dd")} ${event.getTitle()}`;
});
console.log(holidayNames);
}
[ '2026-01-01 元日',
'2026-01-02 銀行休業日',
'2026-01-03 銀行休業日',
'2026-01-12 成人の日',
'2026-02-03 節分',
'2026-02-11 建国記念の日',
'2026-02-23 天皇誕生日',
'2026-03-03 雛祭り',
'2026-03-20 春分の日',
'2026-04-29 昭和の日',
'2026-05-03 憲法記念日',
'2026-05-04 みどりの日',
'2026-05-05 こどもの日',
'2026-05-06 憲法記念日 振替休日',
'2026-05-10 母の日',
'2026-07-07 七夕',
'2026-07-20 海の日',
'2026-08-11 山の日',
'2026-09-21 敬老の日',
'2026-09-22 国民の休日',
'2026-09-23 秋分の日',
'2026-10-12 スポーツの日',
'2026-11-03 文化の日',
'2026-11-15 七五三',
'2026-11-23 勤労感謝の日',
'2026-12-25 クリスマス',
'2026-12-31 大晦日' ]
これで意図通り。
だけど今後の仕様変更でdescriptionの内容が変わるかもしれないですよね。そのうち、「設定画面でチェックしたものだけが取得できる」ようになるような気がしています。







