Googleスプレッドシートで祝日を取得する
投稿日:
更新日:
はじめに
Googleスプレッドシートでガントチャートを作る際に祝日を考慮するのが難しく、都度更新して静的に書くくらいしか方法がないと思っていました。
ただ、祝日リストをCSVで取得すれば日付のリストを作成できたので手順をまとめています。
祝日リストを取得する
以下の内閣府のホームページに、1955年から翌年までの国民の祝日を掲載しているCSVがあるのでCSVのURLをコピーします。
取得したURLは以下になります。
スプレッドシートに読み込む
数式を入力する
Googleスプレッドシートを開き、祝日リストを読み込みたいセルに以下の数式を入力します。
Sheet
=IMPORTDATA("https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv")
アクセスを許可する
数式を入力すると画像のような警告が出るので、#REF!のセルをホバーします。
すると「アクセスを許可」というボタンが出てくるのでこのボタンを押下します。

リストが読み込まれますが、文字化けした状態になります。

取得したデータを整える
日付の表記を変更する
5桁の数字は[表示形式] > [数字] > [日付]を選択して表示形式を変えることで正しい日付の表記で表示することができます。

任意のセルに日付のみコピーする
リストをA列に出力していることを前提にQUERY関数を使用して別のセルに日付のみコピーします。
A1が見出しになるためA2からA列の最下部までを選択しています。その際に空白セルも取得されるのでwhere句にA is not null
を追加して除外します。
最後に日付を昇順にして出力します。
Sheet
=QUERY($A$2:$A, "select A where A is not null order by A asc")
以下のコードでは2024年1月1日以降の祝日だけを取得する記述になっています。
CSVから取得したデータは1955年からの祝日がすべて取得されるので、QUERY関数を使用して必要なデータに絞り込んでおきます。
Sheet
=QUERY($A$2:$A, "select A where A is not null AND A >= date '2024-01-01' order by A asc")
別のワークブックで呼び出すにはIMPORTRANGE関数を使用してください。
日付以外の文字化けを修正する
今回は日付のリストを取得したいので省略しますが、祝日の名前も取得したい場合は以下の記事を参考にしてください。