Web APIからPower Queryで祝日を取り込んでExcelシートに展開

Web APIからPower Queryで祝日を取り込んでExcelシートに展開 - アイキャッチ画像

今Excelで製作中の週報があって、WBSの実働日数をNETWORKDAYS関数で算出する必要が出てきました。

プロジェクトの週報イメージ

そのためには、3年程度(去年・今年・来年)の祝日と休暇をまとめた休日のリストがいるのですが、これまでは、毎回、会社支給のカレンダー片手に翌年分を手入力していました。しかしこの作業、地味に神経を使うんですよね。

そこで今回は、祝日データの部分を、Web APIに手伝ってもらうことにしました。

目次

祝日APIの選定

無料かつ匿名で使用できる祝日APIを探したところ、2つ見つかりました。

  • Holidays JP API(holidays-jp)
  • 国民の祝日API(国民の祝日:日本)

どちらも、3年程度まとめて取得可能なエンドポイントは用意されていません。加工にかかる手間は大差なさそうなので、今回はレイアウトが好みの国民の祝日APIを利用することにしました。

祝日リストの作成

先ほど述べたように、3年程度まとめて取得できるエンドポイントはありません。そこで、すべての祝日データを取得してから、Power Query側で絞り込むことにします。

データの取得

「データ」タブの「データの取得」→「その他のデータソースから」→「Webから」を選ぶとダイアログボックスが表示されます。ここにエンドポイントを入力するだけで取得できます。

Webからデータを取得するダイアログボックス

すべての祝日を取得するエンドポイントは次の通りです。

https://api.national-holidays.jp/all
<https://api.national-holidays.jp/all>

取得後はテーブルに変換して、カラム名右横のボタンから列を展開します。

中身を確認できたら、テーブルとカラムは分かりやすい名前に変更しておきましょう。ここでは「日付、名称、種別」に変更しました。

さらに日付カラムはデータ型が「文字列」になっていると思うので、フィルターをかけやすいよう**「日付」**に変更しておきます。

テーブル及びカラムの名前とデータ型を変更したところ

データの絞り込み

日付カラムのプルダウンメニューから「日付フィルター」→「カスタムフィルター」を選ぶとダイアログボックスが表示されます。ここで「次の値以降:」を指定すれば、任意の年以降に絞り込みが可能です。

日付フィルターを設定しているところ

これで祝日リストの完成です。

完成した祝日リスト

クエリ設定には、これまでの変更内容が記録されています。

休暇リストの作成

Power Query内に新しいテーブルを作って休暇データを入力します。もしExcelシートに入力済みのがあれば、コピペで貼り付けることも可能です。

作成中の休暇リストのテーブル

このあと結合するので、テーブルのカラム名とデータ型は、祝日リストに合わせて変更しておきましょう。

完成した休暇リスト

クエリ設定には、次のように変更内容が記録されていると思います。

休暇リストのクエリ設定

休日リストの作成

クエリの結合(追加)

祝日リストと休暇リストをクエリで結合(追加)した休日リストを作成します。

「新しいクエリ」の「新しいソース」→「その他のソース」→「空のクエリ」を選んで、休日リストという名前の空のクエリを追加します。

次の式を、式のフィールドに入力すれば作成できます。

= Table.Combine({祝日リスト, 休暇リスト})

さらに、日付カラムのプルダウンメニューから「昇順で並べ替え」を選ぶと、内容の確認がしやすくなります。

完成した休日リスト

クエリ設定には、次のように変更内容が記録されていると思います。

休日リストのクエリ設定

休日リストのエクスポート

最後に、Power Queryを閉じてシートに結果をエクスポートするのですが、選択肢が二つあります。

**「閉じて読み込む」**を選択すると、作成したすべてのクエリがエクスポートされてしまうので注意が必要です。万一選んでしまった場合は、休日リストだけ残して他を削除しても問題ありません。

**「閉じて次に読み込む…」を選択して表示されたダイアログボックスで「接続の作成のみ」**を指定すれば、エクスポートせずにPower Queryを閉じることができます。

あらためて「データ」タブの「クエリと接続」でクエリ一覧を表示し、休日リストを右クリックして「読み込み先…」を選ぶとダイアログが開きます。ここで**「テーブル」**を選択すれば、休日リストだけをエクスポートできます。

あとは、スタイルや書式を自由に整えれば完成です。

シートにエクスポートした休日リスト

また、「クエリと接続」の内容は、次のようになっていると思います。

表示中のクエリと接続の内容

休日リストの使用方法

Power Queryからエクスポートしたテーブルの範囲には、元になったクエリと同じ名前が定義されいます。名前はセル範囲に付けられた変数と考えると分かりやすいです。

名前を使うメリットは主に次の3つです。

  • わかりやすい セル範囲「A1:C10」などの代わりに名前を使うと、数式が「=SUM(売上表)」のように読みやすくなります。
  • 入力が楽になる 数式や関数では名前が自動的に候補に出るので、マウスで範囲を選ぶ手間が減ります。
  • 管理がしやすい テーブルなど名前の範囲が変わると、自動的に値も更新されます。また、複雑なブックでも、名前の一覧からすぐに参照できます。

つまり、名前を使うと数式がわかりやすくなり、作業効率と管理のしやすさが大きく向上します。

=NETWORKDAYS("2025/09/01","2025/09/30",休日リスト[日付])

まとめ

今回は、Web APIからPower Queryでデータを取り込む身近な事例として、休日リストの作成を紹介しました。

Power Queryは、Web APIはもちろん、Excelのファイルやデータベースなど、いろんなソースからデータを取り込んで、基本、ノーコードで加工してシートに展開できるのが魅力です。操作はほとんどGUIで完結し、処理の流れがステップとして残るので「どうやって加工したか」がわかりやすく、同じ作業を繰り返すときにも安心です。しかも、一度作ったクエリは「更新」ボタンひとつで新しいデータに適用できるので、面倒な定型作業を一気に効率化できます。

さらに、Power Queryの「加工の過程を自動的に記録して再現できる仕組み」は、いまどきのデータ処理で大事にされている「再現性」「自動化」「透明性」を、ExcelやPower BIの世界に落とし込んだものです。特に、日々データを扱うけれどエンジニアではない人にとって、この仕組みはとても心強い存在だと思います。

このハウツーが必要とされている方の一助になれば幸いです。

  • URLをコピーしました!
Subscribe
Notify of

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

0 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
目次