GASで祝日判定を行う5つのステップ
GASで祝日を自動判定したいんですけど、どうすればいいのか全然わからなくて…

猫男

catman
よし、catmanが「GASで祝日判定」をわかりやすく教えてやろう!一緒に5つのステップで進めていこう。
GASで祝日判定を行う5つのステップ
次の5ステップを踏んでみよう。
Step 1: GASの基本設定
まずは、Google Apps Scriptの基本を押さえておこう。Googleスプレッドシートを開いて、拡張機能から「スクリプトエディタ」を選択するんだ。
function isHoliday(date) {
// ここに祝日判定のロジックを追加する
}
Step 2: 日付を取得する
次は、祝日判定をしたい日付を取得しよう。以下のように書いて、スプレッドシートから日付を読み込むことができる。
function getDate() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
return sheet.getRange("A1").getValue();
}
これでスプレッドシートのA1に入力した日付が取得できるんですね!

猫男
Step 3: 祝日リストを持ってくる
Google CalendarのAPIを利用して、カレンダーから祝日を取得する方法もある。まず、Script Editorからリソース > 高度なGoogleサービスを有効にする必要がある。
function getHolidays() {
const calendarId = 'ja.japanese#holiday@group.v.calendar.google.com';
const calendar = CalendarApp.getCalendarById(calendarId);
const today = new Date();
const year = today.getFullYear();
const start = new Date(year, 0, 1);
const end = new Date(year, 11, 31);
return calendar.getEvents(start, end).map(event => event.getStartTime());
}
Step 4: 日付の判定ロジックを追加する
次に、取得した日付が祝日かどうかを判定するロジックを作成する。
function isHoliday(date) {
const holidays = getHolidays();
return holidays.some(holiday => date.getTime() === holiday.getTime());
}

catman
これで指定した日付が祝日であればtrueが返るようになるさ。
Step 5: 結果をスプレッドシートに記入
最後に、判定結果をスプレッドシートに記録しておこう。
function writeResult() {
const date = getDate();
const result = isHoliday(new Date(date)) ? "祝日です" : "祝日ではありません";
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
sheet.getRange("B1").setValue(result);
}
わぁ、これでスプレッドシートに結果が表示されるようになるんですね!なるほど、これがGASでの祝日判定なんですね。

猫男
🎯GASで祝日判定 練習問題
この記事の内容を元に、手を動かして理解を深めましょう!
【問題1】スプレッドシートのA1セルの日付で祝日判定しよう
スプレッドシートのA1セルに日付を入力し、
その日が祝日かどうかを判定して、B1セルに「祝日です」または「祝日ではありません」と表示するスクリプトを作成しましょう。
✅ 必要な機能
- 日付の取得(getDate関数)
- 祝日リストの取得(getHolidays関数)
- 日付の祝日判定(isHoliday関数)
- スプレッドシートへの出力(writeResult関数)
【問題2】別の年の祝日を判定するには?
今のスクリプトは「今年の祝日」だけ判定できますが、
例えば「来年(2025年)」の祝日を判定したい場合、
どこのコードを変更するべきかを考えてみましょう!
📝解答・解説編
【問題1】の解答例
function getDate() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
return sheet.getRange("A1").getValue();
}
function getHolidays() {
const calendarId = 'ja.japanese#holiday@group.v.calendar.google.com';
const calendar = CalendarApp.getCalendarById(calendarId);
const today = new Date(); const year = today.getFullYear();
const start = new Date(year, 0, 1);
const end = new Date(year, 11, 31);
return calendar.getEvents(start, end).map(event => event.getStartTime());
}
function isHoliday(date) {
const holidays = getHolidays();
return holidays.some(holiday => date.getTime() === holiday.getTime());
}
function writeResult() {
const date = getDate(); const result = isHoliday(new Date(date)) ? "祝日です" : "祝日ではありません";
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
sheet.getRange("B1").setValue(result);
}
✅ スプレッドシートのA1に日付を入力し、writeResult()関数を実行すると、B1に結果が自動で表示されます!
【問題2】の解説
別の年の祝日を判定したい場合は、getHolidays関数の「年」を変更する必要があります。
例えば、来年(2025年)の祝日を判定したいなら、
const year = 2025;
と固定値に変えれば、2025年1月1日〜12月31日の祝日を取得できるようになります!
✅ さらに発展させて、スプレッドシートの別のセル(例:C1)に「年」を入力して、そこから取得するようにもできます!
📚まとめ
- 祝日情報はGoogleカレンダー(日本の祝日カレンダー)から取得できる
- 日付の一致を判定すれば、祝日かどうかがわかる
- 年を変えれば、任意の年の祝日判定もできる!
なるほどー!これで祝日判定がバッチリできるようになりました!

猫男

catman
よし、その調子だ!次は「平日かどうかの判定」や「連休の自動検出」にも挑戦してみよう!