Power Automate 定期実行(スケジュール)完全ガイド|営業日だけ動かす(土日・祝日除外)

はじめに
Power Automate の定期実行(スケジュール)フローを作るとき、多くの人がつまずくのが「毎朝決まった時間に動かしたいけれど、土日・祝日は動かしたくない」という条件です。
本記事では、プレミアムコネクタ(HTTP)を使わずに、SharePoint リストで祝日と「特別営業日」を管理し、営業日だけ処理を実行するフローの作り方を、実際の画面つきで最初から最後まで解説します。
- 定期実行フローで土日・祝日だけ処理をスキップしたい
- プレミアムライセンスがなく、標準コネクタだけで作りたい
- 会社独自の休業日や「祝日でも営業する日(特別営業日)」も管理したい
Power Automateの基本・料金・他の実例一覧はこちら。

完成イメージ:このフローがやること
今回作るのは「平日の朝 9 時に Teams へ通知する」という定期実行フローです。中身の処理(通知)は何でも構いません。主役は「土日・祝日は動かさない」というロジックの部分です。
毎日 9 時にフローが起動しますが、当日が営業日のときだけ Teams 投稿を実行し、土日・祝日のときは何もせずに終了します。下の画像は「祝日に実行されたとき」のテスト結果で、条件のところで止まり(Terminated)、通知が送られていないことがわかります。

フロー全体の構成
フローは次の 5 つのアクションで構成します。
- Recurrence(トリガー)… 毎日 9 時に起動
- 複数の項目の取得(SharePoint)… 祝日・特別営業日リストを取得
- アレイのフィルター処理… リストから「今日の日付」の行だけ抽出
- 条件… 当日が営業日かどうかを判定
- True=Teams へ投稿 / False=終了… 営業日だけ処理を実行
ポイント:なぜ「頻度=日」+条件分岐なのか
「土日除外なら、Recurrence の頻度を『週』にして曜日チェックを月〜金にすればいいのでは?」と思うかもしれません。確かに土日だけを除外するならそれでも可能です。
しかし祝日や会社独自の休業日まで除外しようとすると、曜日指定だけでは対応できません。そこで本記事では、トリガーは「頻度=日(毎日起動)」とシンプルにしておき、土日・祝日の判定はすべて条件アクション側に集約する設計にします。こうすると「営業日かどうか」の判定ロジックが 1 か所にまとまり、メンテナンスも楽になります。
事前準備:SharePoint リストを作る
まず、祝日と特別営業日を管理する SharePoint リストを用意します。リスト名は任意ですが、ここでは 「祝日・特別営業日リスト」とします。次の列を作成してください。
- タイトル(1 行テキスト)… 「元日」「創立記念日」など名称
- 日付(日付と時刻)… 対象の日付
- 区分(選択肢)… 「祝日」または「特別営業日」
- 備考(1 行テキスト・任意)… メモ用
ポイントは「区分」列です。通常の祝日や休業日は「祝日」として登録し、フローはその日を休みにします。一方、「祝日だけど出勤・営業する日」は「特別営業日」として登録すると、その日は土日祝でも処理を動かせます。
以下の手順で SharePoint リストを一から作成します。
① リストを新規作成する
SharePoint サイトの左メニューから「サイト コンテンツ」を開きます。

上部の「+ 新規」をクリックし、メニューから「リスト」を選びます。

「開始する方法」パネルが表示されたら「空白のリスト」を選択します。

リスト名(ここでは「祝日・特別営業日リスト」)を入力して「作成」をクリックします。

「タイトル」列だけの空白リストが作成されます。

② 「日付」列を追加する
リスト右端の「+ 列の追加」をクリックし、列の種類の一覧から「日付と時刻」を選択して「次へ」を押します。


名前に「日付」と入力して「保存」をクリックします。

「タイトル」と「日付」の 2 列が表示されます。

③ 「区分」列を追加する(選択肢型)
同様に「+ 列の追加」から「選択肢」を選択します。

名前に「区分」と入力し、選択肢に「祝日」と「特別営業日」を追加して「保存」をクリックします。

④ 「備考」列を追加する
最後に「+ 列の追加」から「1 行テキスト」を選択し、名前を「備考」として保存します。これで 4 列すべての構成が完成です。

フローの作成手順
① スケジュール済みクラウドフローを作成する
Power Automate(make.powerautomate.com)にアクセスし、ホーム画面を開きます。

左メニューの「作成」から、「スケジュール済みクラウド フロー」を選びます。

フロー名(例:平日朝の営業日通知)と、繰り返しの間隔を入力します。ここでは 1 日ごとに設定して「作成」をクリックします。

② Recurrence を設定する(毎日・日本時間・9 時)
デザイナーが開いたら、Recurrence トリガーを次のように設定します。
- 間隔:1
- 頻度:日
- タイム ゾーン:(UTC+09:00) 大阪、札幌、東京
- これらの時間に:9
プレビューに「毎日 の 9:00 時に 実行する」と表示されれば OK です。

③ SharePoint「複数の項目の取得」を追加する
次のアクションとして SharePoint の「複数の項目の取得」を追加し、先ほど作ったリストを指定します。
- サイトのアドレス:リストがある SharePoint サイト
- リスト名:祝日・特別営業日リスト

④ アレイのフィルター処理で「今日の行」だけ抽出する
続いて「アレイのフィルター処理」を追加します。取得したリストの中から、日付が今日と一致する行だけを残す処理です。
- 差し込む元(From):「複数の項目の取得」の
value - フィルター条件(左辺):
formatDateTime(item()?['日付'], 'yyyy/M/d') - 演算子:次の値に等しい
- フィルター条件(右辺):
formatDateTime(addHours(utcNow(), 9), 'yyyy/M/d')

右辺の addHours(utcNow(), 9) は、UTC の現在時刻に 9 時間足して日本時間の「今日」を求めています。これで「今日リストに登録があるか?あるなら祝日か特別営業日か?」を後段で判定できます。
⑤ 条件で「当日が営業日か」を判定する
「条件」アクションを追加します。ここが今回の心臓部です。パラメーター画面では関数 or(...) が「true と等しい」かどうかを比較する形にします。

左辺に入れる or() 式の中身は、コード ビューで見ると次のようになっています(コピペ用は後述します)。

⑥ True=Teams へ投稿/False=終了 を配置する
条件が True(=営業日)の分岐に、実行したい本処理を置きます。今回は「チャットまたはチャネルでメッセージを投稿する」(Microsoft Teams)を配置し、通知を送ります。

条件が False(=土日・祝日)の分岐には、コントロールの「終了」アクションを置き、状態を「Succeeded(成功)」にします。これで「何もせず正常終了」になります。

⑦ 保存する
右上の「保存」をクリックします。前述のとおり、SharePoint の取得アクションにフィルター クエリがないため、フロー チェッカーに警告(エラーではない)が表示されますが、当日分の絞り込みは「アレイのフィルター処理」で行う設計なので、このまま進めて問題ありません。

テストで動作を確認する
営業日のテスト(True=通知が飛ぶ)
右上の「テスト」→「手動」を選び、フローを実行します。

「フローの実行が正常に開始されました」と表示されれば実行開始です。

当日が平日(営業日)であれば、条件が True に分岐し、Teams にメッセージが投稿されます。

祝日のテスト(False=終了で止まる)
祝日の動作を確認したいときは、SharePoint リストに「今日の日付」を区分=祝日で一時的に登録してテスト実行します。すると条件が False に分岐し、「終了(Terminated)」で処理が止まり、通知は送られません。実行詳細を見ると、条件のところで止まっていることがはっきり分かります。

確認が終わったら、テスト用に登録した行は削除しておきましょう。
条件式のしくみ(コピペ用)
条件の左辺に入れる式の全文です。アレイのフィルター処理 の部分は、実際のアクション名に合わせてください。
or(
and(
equals(length(body('アレイのフィルター処理')), 0),
not(or(
equals(dayOfWeek(addHours(utcNow(), 9)), 0),
equals(dayOfWeek(addHours(utcNow(), 9)), 6)
))
),
and(
greater(length(body('アレイのフィルター処理')), 0),
equals(first(body('アレイのフィルター処理'))?['区分/Value'], '特別営業日')
)
)この式は「次のどちらかを満たせば営業日(True)」という意味です。
- 条件A(通常の営業日):今日がリストに無い(=祝日でない)かつ土曜(6)でも日曜(0)でもない
- 条件B(特別営業日):今日がリストにあり、その区分が「特別営業日」(=祝日や土日でも営業する日)
dayOfWeek() は曜日を 0(日曜)〜6(土曜)の数値で返す関数です。addHours(utcNow(), 9) で日本時間に補正してから曜日を求めているのがポイントです。これで「土日除外」も条件式だけで完結します。
よくある質問
- プレミアムライセンスは必要ですか?
不要です。この構成は SharePoint・Microsoft Teams・コントロール・データ操作という標準コネクタだけで作れます。プレミアム扱いの HTTP アクションは使いません。
- 保存時のフロー チェッカー警告は無視していいですか?
はい。SharePoint「複数の項目の取得」に OData フィルターを設定していないことへの警告ですが、当日分の絞り込みは後段の「アレイのフィルター処理」で意図的に行っているため問題ありません。エラー(赤)ではなく警告(黄)です。
- 土日除外だけでよく、祝日は関係ありません。もっと簡単にできますか?
土日除外だけなら、Recurrence の頻度を「週」にして曜日を月〜金に絞るだけでも実現できます。祝日や会社独自の休業日まで除外したい場合に、本記事の SharePoint リスト+条件分岐の構成が効いてきます。
- 「特別営業日」とは何ですか?
祝日や土日でも、その日は出勤・営業するためフローを動かしたい、という例外日のことです。SharePoint リストに区分=特別営業日で登録しておくと、条件式の条件B が効いてその日は処理が実行されます。
まとめ
Power Automate の定期実行で土日・祝日を除外するポイントは、トリガーは毎日起動にしておき、営業日判定は条件アクションに集約することです。祝日と特別営業日を SharePoint リストで管理すれば、プレミアムライセンスなしで、会社独自のカレンダーにも柔軟に対応できます。
まずは小さな通知フローで「営業日だけ動く」動作を確認し、慣れてきたら True 分岐の処理を実際の業務に置き換えてみてください。
あわせて読みたい
Power Automateの全体像・基本・料金・実例一覧はこちらにまとめています。

Teamsへ定期投稿したい場合はこちら。

フローの移行・バックアップはこちら。




