見出し画像

内閣府データを使って祝日判定するGoogle Apps Script

Introduction: 祝日判定といえば

Google Apps Scriptで祝日判定をするとき。
大体はGoogleカレンダーの"日本の祝日"を取得して判定すると思うんですけど、内閣府の公式データを使ってそれをやってみることにした。

日本の祝日は当然内閣府からまず最初に公開されるので間違いが発生するわけがないですからね。常に最新だし。

Step 1: 内閣府:『国民の祝日について』

このページから過去分も含めた日本の祝日リストがCSVファイルでダウンロードすることができるようになってる。CSVファイルでダウンロードができるということは実質APIみたいなもんなので、「祝日判定するならこのデータ使う方が確実じゃん」と思った。

Step 2: CSVファイルをダウンロードして読み込む設定

以下のコードを追加することで内閣府データを読み込むことができる。

function getHolidayFromCabinetOffice () {
  const endpoint = 'https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv';
  const request = UrlFetchApp.fetch(endpoint);
  const blob = request.getBlob().getDataAsString("MS932");
  const csvData = Utilities.parseCsv(blob);
  return csvData;
}

CSVファイルの読み込んだ二次元配列は以下のような内容になっており、1955年から1年先の2025年までの祝日データが含まれている。

[
  [ '国民の祝日・休日月日', '国民の祝日・休日名称' ],
  [ '1955/1/1', '元日' ],
  [ '1955/1/15', '成人の日' ],
  [ '1955/3/21', '春分の日' ],
  [ '1955/4/29', '天皇誕生日' ],
  [ '1955/5/3', '憲法記念日' ],
    .
    .
    .
    .
  [ '2025/11/3', '文化の日' ],
  [ '2025/11/23', '勤労感謝の日' ],
  [ '2025/11/24', '休日' ]
]

Step 3: 日付の判定を行うスクリプト

祝日であればtrue、祝日ではなければfalseを返すというシンプルな想定で作成してみる。

function checkHoliday (date) {
  const holidayList = getHolidayFromCabinetOffice ();
  const dateString  = Utilities.formatDate(date, 'JST', 'yyyy-M-d');          //CSVの日付フォーマットに合わせる
  const pickHoliday = holidayList.filter(csvRow => csvRow[0] === dateString); //一致しているかのチェック
  return pickHoliday.length != 0;                                             //祝日であればtrueを返す
}

↓「参考になった!」「便利!」と思った方は、ぜひご支援ください❤️↓

ここから先は

0字

¥ 100

この記事が気に入ったらチップで応援してみませんか?