コラム

毎朝(土日祝日、会社指定の休みを除く前営業日)売上レポートを自動配信する方法

作成者: 平野 祥史|Mar 31, 2026 5:56:08 AM

土日祝日・年末年始・お盆など会社指定の休みを除いて「前営業日」の売上を自動配信(PowerAutomate×Excel×Outlook/Teams) 

 毎朝、売上レポートを確認して、Excelを開き、数字をまとめ、関係者へメールやTeamsで共有する。
この作業を手動で行うと、送信遅れ・コピペミス・宛先違いが起きてしまいます。

さらに「土日祝日・年末年始・お盆・臨時休業など、会社指定の休みは配信しない」運用にすると、

1.休み明けに送り忘れる
2.休業日に誤って配信する
3.長期の休み明けに「どの日付のレポートを送るべきか」が確認に時間がかかる

といった問題が起きやすくなります。

そこでおすすめなのが、Power Automateのクラウドフローを使って“営業日だけ配信する方法です。
スケジュール実行でフローを動かし、休業日はスキップ、休み明けは自動で「前営業日」を計算して配信します。

 

こんな方におすすめです

 ●  毎朝の売上速報を手作業でメール/Teams送信している 
 ●  土日祝日・年末年始・お盆など 会社指定の休みは配信しない 
 ●  休み明けは 前営業日 の売上を確実に送りたい 


目次

1.営業日だけ配信する全体の流れ
2.事前準備 3.実装手順:営業日判定→前営業日算出→配信 
4.よくあるつまずきと対策
5.まとめ&次のステップ


※目次をクリックすると、該当の目次へ移動します。

 

 

1.営業日だけ配信する全体像の流れ

フローは以下の手順を想定して作成します。

1.毎朝 8:30 に起動(スケジュール実行)
2.今日が休業日ならスキップ(土日+休業日マスタ)
3.前営業日を自動で計算(月曜・連休明けもブレない)
4.Excelから 前営業日の売上データを取得
5.Outlookでメール配信(必要ならTeamsで通知を実施)
6.(任意)ログを保存・失敗した場合は通知する運用を行う

 

 

2.事前準備

(1)売上ExcelはSharePoint/OneDriveに置く 

 

 クラウドフローで動かすため、売上レポートExcelは SharePoint/OneDrive(Business) に置きます。 

(2)EXCELはテーブル化+「日付キー列」を用意する

 

Power AutomateでExcelから行を取得する定番は 「List rows present in a table」です。
このアクションは「テーブル」が前提なので、集計表はテーブル化します。

さらに、実装を安定させるために 日付比較用の 文字列キー列を用意します。

●テーブル名(例):SalesDailySummary
●推奨列(例)
  ●日付:DateKey(文字列):yyyy-MM-dd 形式(例:2026-03-31   ●売上:SalesTotal(数値)
  ●注文数:Orders(数値)
  ●粗利:GrossProfit(数値)
  ●(必要に応じて)拠点、前年差など

Excelの「日付」列が日付型のままだと、コネクタ側の比較でハマりやすいので、DateKey(文字列)があると一気に安定します。

(3)休業日マスタを作る

 

会社の休業日(祝日・年末年始・お盆・臨時休業など)を 一元管理するため、SharePointリストを用意します。

●リスト名:休業日マスタ
●列(おすすめ)
  ●HolidayKey(1行テキスト)… yyyy-MM-dd
  ●HolidayName(1行テキスト)… 例:祝日/年末年始/お盆/臨時休業 など   ●Category(選択)… 祝日/会社休業/その他(任意)

「HolidayDate(日付)」列でも作れますが、SharePointの日時判定は環境差で詰まりやすいです。この記事では HolidayKey(文字列)で照合します。

 これにより、実装が楽になります。

 

 

3.実装手順
営業日判定→前営業日算出→配信 

 ここからは Power Automate(クラウド) のアクション名で説明します。
画面は新旧デザインで多少違いますが、やることは同じです 

Step1.スケジュールトリガー(Recurrence)を設定 

 

トリガー:繰り返し(Recurrence)

・Frequency:Day
・Interval:1
・Time zone:Tokyo Standard Time(日本の時刻で設定する)
・At these hours:8
・At these minutes:30

ここでタイムゾーンを正しく設定するのが大事です。

Step2.本日(JST)の日付キーを作る(yyyy-MM-dd) 

 

 アクション:作成(Compose)(名前例:NowJST) 
convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time')

 アクション:作成(Compose)(名前例:TodayKey) 
formatDateTime(outputs('NowJST'), 'yyyy-MM-dd')

Step3.本日が土日か判定する

 

 アクション:作成(Compose)(名前例:TodayDOW) 

dayOfWeek(concat(outputs('TodayKey'), 'T00:00:00+09:00'))

dayOfWeek() はWorkflow式としてPower Automateでも使えます。 
 (+09:00 を付けてJST基準にするのがポイントです) 

条件(Condition)

●左:outputs('TodayDOW')
●演算子:is equal to
●右:0(日曜)
  OR
●右:6(土曜)

Sunday=0, Saturday=6 の仕様は dayOfWeek に記載があります。

この条件が Yes(=土日) の場合は、後続処理に進まずスキップします。

 

Step4.本日が「休業日マスタ」に載っているか判定する 

 

アクション:SharePoint – Get items(項目の取得)

●Site Address:休業日マスタがあるサイト
●List Name:休業日マスタ
●Filter Query
  HolidayKey eq '@{outputs('TodayKey')}'

●Top Count1(1件見つかれば十分なので軽くします)

Filter Queryの書き方(OData)は公式チュートリアルで例が出ています。

 

条件(Condition:休業日かどうか)
詳細モード(高度なモード)で、次の式にすると分かりやすいです。

@greater(length(body('Get_items')?['value']), 0)

 

Step5.スキップ条件をまとめる(本日が終業日なら終了)

 

ここまでで「本日が土日」「本日が休業日」の判定ができます。

●土日ならスキップ
●休業日マスタに存在するならスキップ

スキップする場合は Terminate(終了) を使い、ステータスは Succeeded にしておくと「正常にスキップ」扱いになります。

Terminate(Succeeded)

●Message:今日は休業日のため配信しません(@{outputs('TodayKey')})

 

 

Step6.前営業日(TargetDate)を自動算出する

 

ここが一番大事です。
休み明け(例:月曜)に「前日=日曜」ではなく、前営業日=金曜を自動で選ぶために、前日からさかのぼって「営業日」を探します。

6-1. 変数を用意

変数を初期化(Initialize variable)

●vCandidate(String)… 前営業日候補(最初は“今日-1日”)

formatDateTime(addDays(concat(outputs('TodayKey'), 'T00:00:00+09:00'), -1), 'yyyy-MM-dd')
vFound(Boolean)… false

addDays() など日付系関数もWorkflow式として使えます。

6-2. Do until で「営業日が見つかるまで繰り返す」

Do until:vFound is equal to true の中に以下を入れます。

(A) 候補日が土日か判定

Compose:CandidateDOW

dayOfWeek(concat(variables('vCandidate'), 'T00:00:00+09:00'))

Condition:土日なら1日戻して continue

  もし CandidateDOW が 0 or 6 なら
    ●Set variable vCandidate
formatDateTime(addDays(concat(variables('vCandidate'), 'T00:00:00+09:00'), -1), 'yyyy-MM-dd')

     ●(この周回では vFound は触らず、次のループへ) 

 

(B) 候補日が休業日マスタにあるか判定

土日でなければ、休業日マスタを確認します。

SharePoint – Get items(項目の取得)(名前例:Get_items_candidate

 ●Filter Query:
    HolidayKey eq '@{variables('vCandidate')}'

 ●Top Count:1 

Condition:休業日なら1日戻して continue

 ●業日(length>0)なら     ●Set variable vCandidate:同様に1日戻す

  ●休業日ではないなら

      ●Set variable vFound = true(これでDo untilが抜けます)

 

このパターンは「土日」「祝日」「年末年始」「お盆」すべてに対応できます。
(祝日も休業日マスタに登録しておけばOKです)


 

Step7.Excelから“前営業日”の行だけ取得する 

 

前営業日が vCandidate に確定したら、それが TargetDate です。

7-1. Excelの行を取得(List rows present in a table)

Excel Online (Business) – List rows present in a table

 ●File:売上レポートExcel
 ●Table:SalesDailySummary
 ●Filter Query(推奨:DateKeyが文字列の場合)
   DateKey eq '@{variables('vCandidate')}' 

このアクションは 既定で256行までなので、行数が多いテーブルを対象にする場合はページネーション(Pagination)を検討してください。

 

7-2. 行が取れなかった場合の分岐(運用上ほぼ必須)

Condition:取得件数が0なら
@equals(length(body('List_rows_present_in_a_table')?['value']), 0)

0件なら、

 ●管理者へ通知(Teams or メール)
 ●Terminate(FailedでもSucceededでも運用方針で)

「0件=売上がゼロ」なのか「データ未更新」なのかは運用次第なので、まずは通知して止めるがおすすめです。

Step8.メール本文を作る(サマリー+表) 

 

 8-1. サマリー(1行だけの想定)

日次集計テーブルが「1日1行」なら、最初の行を取ればOKです。
 

Compose:row(最初の1行) 
 first(body('List_rows_present_in_a_table')?['value'])

Compose:SalesTotal 
 outputs('row')?['SalesTotal']
   (Orders/GrossProfitも同様) 

8-2. 表(HTMLテーブル)

拠点別など複数行を送る場合は、Create HTML table を使うと楽です。
(必要なら、事前に Select で列名を整える)

 
 

Step9.Outlookでメール送信(Send an email (V2)) 

 

Office 365 Outlook – Send an email (V2)

●To:配信先(メーリングリスト推奨)
●Subject(例):
【売上速報】@{outputs('TodayKey')}(対象:@{variables('vCandidate')})
●Body(HTML):
  ●先頭に「対象日」「サマリー」
  ●次にHTMLテーブル(必要なら)
  ●最後に元ファイルのリンク

OutlookコネクタのBodyはHTMLとして扱う項目になっています。

   

Step10.Teamsにも投稿して見落とし防止 

 

 メールを見ない方に、Teamsで「要点+リンク」だけ流す運用でもよいです。 

 





4.よくあるつまずきと対策

ここでは、実際に現場で使いやすい活用例を3つ紹介します。

 
(1)休業日判定がうまく動かない

  ●対策:SharePoint側は HolidayKey(文字列 yyyy-MM-dd) で照合に寄せる
  ●Filter Query+length判定は公式例の形に寄せる

(2)Excelの行が取れない/日付で絞れない
  ●対策:Excelに DateKey(文字列) を作り、Filter Queryで eq する
  ●Excelコネクタはフィルター・ページネーション等に制約があるため、仕様に沿って組む

(3)想定時刻に動かない(時刻ズレ)
  ●対策:Recurrenceの Time zone を明示、必要に応じて convertTimeZone を使う

 

 

 

5.まとめ&次のステップ

Power Automateを使えば、土日祝日・年末年始・お盆・臨時休業など会社指定の休みを除外しつつ、毎朝の売上レポートを自動配信できます。

ポイントは2つです。

  1. 今日が休業日ならスキップ(土日+休業日マスタ)
  2. 前営業日を自動算出(休み明けでも対象日がブレない)

次のステップとして以下の取り組みを考えてみましょう。

●配信ログ(成功/失敗/対象日)をSharePointに残す
●失敗時はTeamsでメンション通知
●拠点別・担当別など「見たい切り口」の表を追加して定着させる

 

 

 

次におすすめの記事


Outlookの添付をSharePointへ自動保存する具体手順(応用:フォルダ分け/上書き防止)

Excelのテーブルを使った台帳自動更新(空欄・重複に強い設計)

Forms受付→自動返信→担当通知→進捗管理(問い合わせ対応の型)


 

6. 次のステップ(研修のご案内)

「この作業も自動化できるかな?」というご相談や、部署全体での内製化に向けた研修も承っています。