はじめに
PowerAutomateで祝日を考慮した営業日ベースの処理を作成する際、祝日一覧を用意する必要がありました。
そこで今回、Power Automateを使って祝日APIのデータをSharePointリストに自動登録するフローを作ってみたのでご紹介します。
このフローは年1回、翌年の祝日を登録するため、前年の年末に実行することを想定して作成しました。
使用したもの
- Power Automate(クラウドフロー)
- SharePoint(休日一覧用のリスト)
- 国民の祝日API(JSON形式で祝日を取得)
SharePointリストの準備
リスト名は CompanyHolidaysList としました。
以下のような列構成で作成しました:
-
日付(Date):日付
APIのキーにあたる日付を登録します。表示形式は「日付のみ」で設定。 -
休日名(Title):一行テキスト (デフォルトのTitleをそのまま使用)
APIの値にあたる祝日名を登録します。 -
種別(Type):選択肢
「祝日」「会社休日」を分類して選択できるようにしています。
今回は祝日APIから取得したものは「祝日」としました。
今後、会社カレンダーの休日を追加する予定のため「会社休日」も用意しました。
フローの構成概要
- HTTPコネクタで祝日APIを呼び出す
- レスポンスをそのままでは繰り返し処理に使えないため、文字列として扱って配列に変換
- 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回、前年末に動かすことで、翌年の営業日ベースの処理に備えることができます。
同じような処理が必要になった時の参考になれば幸いです。
参考リンク
※この記事は現在勉強中の内容を整理したものであり、技術的に不正確な点が含まれている可能性があります。
ご指摘や改善案などがあれば、コメントで教えていただけると嬉しいです。