【GAS】Googleスプレッドシートで祝日を自動判定する方法
弊社ではGoogleスプレッドシートを使って、日付単位でECサイトの各種指標を記録しています。
日付と合わせて曜日や、休日・祝日などもデータ分析において必要な項目になりますが、Googleスプレッドシートには日本の祝日をシンプルに取得できる関数が用意されていません。
そこで今回は、Google Apps Script(GAS)を使って日付から祝日を自動で判定するコードを紹介します。

サンプルで上記のようなシートを用意しました。
A列に入力された日付に対し、B列にはその日付が平日なのか、休日(土日祝)なのかが自動で出力されるようにします。
まず、メニューの「拡張機能」から「Apps Script」を選択します。

すると新しいタブが開き、GASの編集画面が表示されます。

以下のコードを入力しましょう。
/**
* 休日判定
*/
function isHoliday(date) {
var url = "https://holidays-jp.github.io/api/v1/date.json";
var response = UrlFetchApp.fetch(url);
var holidays = JSON.parse(response.getContentText());
var dateString = Utilities.formatDate(new Date(date), Session.getScriptTimeZone(), "yyyy-MM-dd");
var checkDate = new Date(date);
// 土曜日か日曜日かを判定
var isWeekend = (checkDate.getDay() === 0 || checkDate.getDay() === 6);
// 祝日かを判定
var isHoliday = holidays[dateString] ? true : false;
// 土日祝の場合は「休日」、それ以外は「平日」を返す
if (isWeekend || isHoliday) {
return "休日";
} else {
return "平日";
}
}
今回は無料で公開されている「Holidays JP API」を利用させていただきました。
https://holidays-jp.github.io/
簡単にコードを解説すると、まず引数として与えられた日付が土曜日、日曜日なのかを判定。
その後、APIから取得した祝日リストに該当するかを判定。
最後に「休日」または「平日」と文字列にして判定結果を返します。
関数名は isHoliday として定義しているので、スプレッドシート内でこの関数を使うことができます。

B列全体に関数を入力し、条件付き書式で休日を赤文字にしてみました。

2月11日、2月24日はそれぞれ祝日ですが、正しく休日として判定されていることが分かります。
まとめ
この方法を使えば、最新の日本の祝日データを自動で取得し、スプレッドシート内で祝日かどうかを判定できます。
一度コードを書いてしまえば、この関数は使い回しができて便利なので、是非試してみてください。
このカテゴリの最新記事
2025.01.23
2024.02.02
2024.05.24
2023.11.28