Power Automateでワークフローを作成する際、営業日計算は頻繁に利用される処理の一つです。しかし、実際に動かしてみると「なぜか土日が含まれてしまう」「祝日が無視されている」「計算結果が1日ずれている」といったトラブルに遭遇することが少なくありません。このような問題は、フローの実行履歴を正しく読むことで原因を特定し、迅速に修正できます。本記事では、営業日計算でつまずいたときに実行履歴からどのように原因を読み解くか、具体的な手順や失敗パターンを交えて解説します。
【要点】この記事で確認すること
- 最初に見る場所: 実行履歴の「アクション」タブで、営業日計算に関わる各アクションの入力・出力を確認する。特に「Apply to each」や「Condition」の中の結果も見落とさない。
- 切り分けの軸: 計算ロジック(関数の指定)、祝日リスト(テーブルやカスタムコネクタの内容)、日時のタイムゾーン設定の3つに分けて調査する。
- 注意点: 会社PCで共有されているテナントの場合、管理者が設定したデータ損失防止ポリシー(DLP)やコネクタの使用制限により、フローがブロックされることがある。勝手にカスタムコネクタを追加せず、IT部門に確認しながら進める。
ADVERTISEMENT
目次
なぜ営業日計算でトラブルが起きるのか?よくある原因
営業日計算のトラブルは、主に以下の3つの原因に集約されます。それぞれが単独で問題を起こすこともあれば、複合的に影響することもあります。
1. 関数の指定ミス
Power Automateでは「addDays」「addBusinessDays」「differenceBetweenBusinessDays」といった関数を用いて営業日計算を行います。特に「addBusinessDays」関数は第3引数に祝日リストを指定できますが、この関数の動作を誤解しているケースが多く見られます。例えば、開始日が休日の場合、関数は内部で自動的に次の営業日から計算を開始する仕様です。この挙動を把握していないと、想定と異なる結果になります。
2. 祝日リストの不足や形式ミス
営業日計算に祝日を反映させるには、通常「日本の祝日」をまとめたテーブルやExcelシートを参照します。しかし、そのリストが古い、日付の形式が一致していない、あるいは「祝日リスト」として正しく認識されていない場合、関数が期待通りに動作しません。また、祝日を配列で渡す必要があるのに、単一の日付文字列を渡しているといったミスもよくあります。
3. タイムゾーンとUTCのズレ
Power Automateの日時はデフォルトでUTC(協定世界時)で扱われます。日本時間(JST)とUTCの間には9時間の差があり、このズレが営業日計算に影響することがあります。特に日付の境界(夜中の0時)をまたぐ処理で前後の日がずれる原因になります。実行履歴でタイムゾーンが正しく設定されているか確認しないと、原因を見誤る恐れがあります。
実行履歴で何を確認すべきか?基本的な見方
フローの実行履歴は、各アクションの入力と出力を確認できる強力なデバッグツールです。以下の手順で営業日計算に関する情報を読み解いてください。
- フローの実行履歴を開く – Power Automate ポータルで該当フローを選択し、「実行履歴」タブをクリックします。対象の実行を選択して詳細を開きます。
- 営業日計算に関わるアクションを特定する – 例えば「Add business days (Date Time)」アクションや、カスタムコードを含む「Apply to each」内のアクションです。アクション名から探しやすいように、事前にわかりやすい名前を付けておくと便利です。
- 入力と出力を確認する – 各アクションの「INPUTS」と「OUTPUTS」のJSONを展開します。特に「startDate」「businessDays」「holidayList」の値が正しいか確認します。数値が文字列になっていないか、日付形式が統一されているかも重要です。
- エラーメッセージを見逃さない – もしアクションが失敗している場合、赤いアイコンとともにエラー内容が表示されます。例えば「関数に指定したタイムゾーンが無効」といったメッセージは直接的な手がかりになります。
- 変数の内容を追跡する – フロー内で「変数を初期化する」や「変数の値を設定する」アクションを使っている場合、その変数の値が計算途中でどう変わるかを実行履歴で確認します。デバッグに非常に役立ちます。
状況別の比較表:正常時と異常時の実行履歴の違い
以下の表は、営業日計算が正常に動作した場合と、典型的なトラブルが発生した場合の実行履歴の見え方の違いをまとめたものです。自分のフローの状態と照らし合わせてください。
| 確認項目 | 正常な実行履歴 | 異常な実行履歴 |
|---|---|---|
| 「Add business days」の入力 | startDate: “2025-04-01T00:00:00Z” (火曜)、businessDays: 3、holidayList: [“2025-04-03”, “2025-04-04”] | startDateが文字列(“April 1, 2025”)で形式不一致、またはholidayListが空配列 |
| 「Add business days」の出力 | output: “2025-04-08T00:00:00Z” (火曜+3営業日=金曜→祝日で月曜→さらに祝日で火曜) | output: “2025-04-04T00:00:00Z” (祝日が無視されて金曜) |
| エラー/警告 | なし | 「入力パラメータ’holidayList’の形式が無効です」またはタイムゾーンエラー |
| 変数の値 | 計算結果の日付が期待通り | 変数が空、または元の値から変わっていない |
失敗パターンとその対処法
実際によく報告される失敗パターンを3つ挙げ、具体的な対処法を説明します。
パターン1:祝日が正しく適用されない
症状: 国民の祝日が営業日としてカウントされてしまい、指定した営業日数よりも少ない日付が返ってくる。または、祝日がスキップされずにその日付が返される。
実行履歴での確認: アクションの出力で、祝日リストに含まれる日付が結果に出ているかどうか。入力のholidayListが正しい配列になっているか、日付の形式が”2025-04-03″のように統一されているか確認します。
対処法: 祝日リストを管理しているテーブルからJSON配列を生成する際に、日付を「yyyy-MM-dd」形式に変換する式を追加します。例えば「formatDateTime(item()?[‘Date’], ‘yyyy-MM-dd’)」のような式を使います。また、リスト自体が最新のものか(例えば2025年から2026年に更新されているか)も確認します。
パターン2:開始日が休日の場合の動作を誤解している
症状: 開始日が土日や祝日の場合、自動的に次の営業日から計算が始まる仕様を知らないため、期待より1日少ない結果になる。
実行履歴での確認: アクションの出力を見て、開始日から最初の営業日までの調整が行われているかどうか。例えば開始日が土曜日なら、出力の日付が月曜日からスタートしているはずです。
対処法: 仕様を理解した上で、必要なら開始日を強制的に次の営業日に調整するロジックを組み込みます。例えば「Condition」で開始日が祝日かどうかを判定し、祝日なら「Add business days」関数の引数に調整を加える方法があります。
パターン3:時間がずれて計算に影響する
症状: フローの実行時刻によって結果が変わる。例えば朝8時(UTC 23時前日)に実行した場合と午後3時に実行した場合で、日付が1日異なる。
実行履歴での確認: アクションの入力日時にタイムゾーンが明示されていない場合は、デフォルトでUTCとして扱われます。出力の日付を見て、UTC表記かどうか確認します。また、実行履歴の上部に表示される「実行開始時刻」がUTCなのかJSTなのかも確認します。
対処法: すべての日時アクションで明示的にタイムゾーンを指定します。例えば「convertTimeZone(utcNow(), ‘UTC’, ‘Tokyo Standard Time’)」のように変換してから計算に使います。フロー全体でタイムゾーンを統一することを徹底してください。
管理者へ伝えるべき情報と再発防止
営業日計算のトラブルが頻発する場合、管理者に以下の情報を伝えるとスムーズに解決できます。
- 実行履歴のスクリーンショット – 特に問題のアクションの入力と出力、エラーメッセージを含めた画面キャプチャを添付します。
- フローのエクスポートファイル – フローを「.zip」形式でエクスポートし、全体のロジックを確認できるようにします。ただし、機密データが含まれる場合はマスク処理を検討します。
- 期待する動作と実際の動作の具体的な比較 – 例えば「開始日4月1日、3営業日後→4月4日を期待したが、結果は4月5日だった」というように数字で示します。
- 再現手順 – フローを手動でトリガーして同じ結果が得られるか、再現性を確認しておきます。
再発防止には、営業日計算のテンプレートを作成し、複数のフローで共通化することが有効です。また、定期的に祝日リストを自動更新する仕組み(例えばMicrosoft Graph APIから祝日情報を取得するスクリプト)を導入すると、手動メンテナンスのミスを減らせます。
よくある質問(FAQ)
Q1. 「Add business days」関数で祝日リストを指定してもエラーになる。
A. 指定する祝日リストは配列である必要があります。テーブルから取得する場合、Selectアクションで配列に変換し、さらに日付の形式を文字列として統一してください。よくあるミスは日付が「DateTime」型のまま渡されることです。
Q2. 実行履歴にアクションが表示されない。
A. フロー全体が「スキップされた」ステータスになっていないか確認します。条件分岐で該当アクションが実行されなかった可能性があります。トリガーや条件設定を見直してください。
Q3. 営業日計算の結果が常に1日ずれる。
A. タイムゾーンの問題である可能性が高いです。UTCとJSTの差が9時間あるため、日付の境界付近で処理が前後することがあります。全ての日時をJSTに変換してから計算するように統一してください。
Q4. カスタムコネクタを使って祝日リストを参照しているが、うまく動作しない。
A. カスタムコネクタがデータ損失防止ポリシー(DLP)でブロックされていないか、管理者に確認を依頼してください。また、APIの応答が想定通りのJSON形式になっているか、テストツールで事前に検証することをおすすめします。
まとめ
営業日計算のトラブルは、関数の仕様理解不足、祝日リストの不備、タイムゾーンのズレという3つの原因に大きく分類できます。実行履歴はこれらの原因を特定するための最も確実な手がかりとなります。アクションの入力・出力の詳細を確認し、エラーメッセージや変数の値の変化を追跡することで、問題の箇所を絞り込めます。また、見つかった原因に対しては、適切な関数の利用、祝日リストの形式統一、タイムゾーンの明示的変換といった具体的な対策を実行してください。管理者と連携し、再発防止の仕組みを整えることで、安定したフロー運用を実現できます。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Office・仕事術の人気記事ランキング
- 【Outlook】添付ファイルが「Winmail.dat」に化ける!受信側が困らない送信設定
- 【神技】保存せずに閉じたExcel・Wordファイルを復元する!消えたデータを復活させる4つの救出法
- 【Teams】メッセージを「保存済み」にして後で読む!重要なチャットをブックマークして整理する技
- 【Word】差し込み印刷で数字の桁を整える!金額にカンマ(桁区切り)を入れる設定
- 【Word】校閲機能の基本!赤字(変更履歴)とコメントで修正を見える化する
- 【PDF】PDFに入力した文字の「フォント・サイズ・色」を変更するプロパティ設定
- 【PDF】結合するPDFの「用紙サイズ」がバラバラな時、すべてを「A4サイズ」に強制リサイズしてから結合する
- 【Excel】矢印キーで「セルが動かず画面がスクロールする」!ScrollLockの解除方法(ノートPC対応)
- 【Teams】会議の「参加者リスト」を出席後にダウンロードする!誰が参加したか確認する手順
- 【Teams】画面共有時に「音声」も共有する方法!音が流れない時の設定手順
