1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

祝日APIを使ってSharePointリストに祝日一覧を自動登録してみた

Last updated at Posted at 2025-11-20

はじめに

PowerAutomateで祝日を考慮した営業日ベースの処理を作成する際、祝日一覧を用意する必要がありました。
そこで今回、Power Automateを使って祝日APIのデータをSharePointリストに自動登録するフローを作ってみたのでご紹介します。

このフローは年1回、翌年の祝日を登録するため、前年の年末に実行することを想定して作成しました。

使用したもの

  • Power Automate(クラウドフロー)
  • SharePoint(休日一覧用のリスト)
  • 国民の祝日API(JSON形式で祝日を取得)

SharePointリストの準備

リスト名は CompanyHolidaysList としました。
以下のような列構成で作成しました:

  • 日付(Date):日付
    APIのキーにあたる日付を登録します。表示形式は「日付のみ」で設定。
  • 休日名(Title):一行テキスト (デフォルトのTitleをそのまま使用)
    APIの値にあたる祝日名を登録します。
  • 種別(Type):選択肢
    「祝日」「会社休日」を分類して選択できるようにしています。
    今回は祝日APIから取得したものは「祝日」としました。
    今後、会社カレンダーの休日を追加する予定のため「会社休日」も用意しました。

フローの構成概要

  1. HTTPコネクタで祝日APIを呼び出す
  2. レスポンスをそのままでは繰り返し処理に使えないため、文字列として扱って配列に変換
  3. Apply to each(それぞれに適用する)で1件ずつSharePointリストに登録する

対象年の指定について

祝日APIはURLの末尾に年を指定することで、該当年の祝日一覧を取得できます。
今回は「実行した日の翌年」を対象とするため、以下のような式で年を取得してURLに組み込んでいます:

concat(  
 'https://holidays-jp.github.io/api/v1/',  
 string(add(int(formatDateTime(utcNow(),'yyyy')), 1)),  
 '/date.json'  
)

この式では、現在の年(例:2025)を取得し、add(...) で +1 して翌年(2026)に変換、それを文字列としてAPIのURLに結合しています。

結果として、以下のような形式で祝日一覧を取得できます:

https://holidays-jp.github.io/api/v1/2026/date.json

このURLを使って、HTTPアクションでGETリクエストを送信し、レスポンスとしてJSON形式の祝日データを受け取っています。

祝日データを配列に変換する理由

祝日APIのレスポンスは、以下のような形式で返ってきます:

{
  "2025-01-01": "元日",  
  "2025-01-08": "成人の日",  
  ...
}

この形式はキーが「日付」、値が「祝日名」という構造になっており、Power Automate の Apply to each(それぞれに適用する)には直接渡すことができません。 Apply to each は配列(Array)を前提としているため、まずこのオブジェクトを配列に変換する必要があります。

祝日APIのレスポンスは JSON 形式で受け取れるため、まず「JSON の解析」アクションを使って構造を展開します。
通常はこのアクションを使うことで配列として扱えるのですが、祝日APIのレスポンスはキーが「日付」、値が「祝日名」というオブジェクト形式になっているため、配列化がうまくいきませんでした。

そこで今回は、解析済みの JSON を文字列に変換し、以下の式で "日付":"祝日名" のような文字列の配列に変換しています:

split(
  replace(
    replace(
      string(body('JSONの解析')),
      '{', ''
    ),
    '}', ''
  ),
  ','
)

この配列を Apply to each に渡すことで、1件ずつ処理できるようになります。

SharePointリストへの登録処理

配列化した祝日データを Apply to each に渡し、1件ずつ SharePoint に登録しています。
各アイテムは "2026-01-01":"元日" のような文字列なので、以下のような式で日付と祝日名を分けています:

  • Date(日付列)
 replace(first(split(items('Apply_to_each'), ':')), '"', '')

"2026-01-01" の部分を取得し、ダブルクオートを除去

  • Name(祝日名列)
  replace(last(split(items('Apply_to_each'), ':')), '"', '')

"元日" の部分を取得し、同様に整形

  • Type(種別列)
    今回はすべて "祝日" を指定しています

この処理を SharePoint の「アイテムの作成」アクションで設定することで、1件ずつリストに登録できます。

おわりに

祝日APIとSharePointを組み合わせることで、毎年祝日一覧を手動で1件ずつ登録する手間がなくなりました。
このフローは年1回、前年末に動かすことで、翌年の営業日ベースの処理に備えることができます。

同じような処理が必要になった時の参考になれば幸いです。

参考リンク


※この記事は現在勉強中の内容を整理したものであり、技術的に不正確な点が含まれている可能性があります。
ご指摘や改善案などがあれば、コメントで教えていただけると嬉しいです。


1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?