マニュアル
PR

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

sanane
記事内に商品プロモーションを含む場合があります

はじめに

Power Automate の定期実行(スケジュール)フローを作るとき、多くの人がつまずくのが「毎朝決まった時間に動かしたいけれど、土日・祝日は動かしたくない」という条件です。

本記事では、プレミアムコネクタ(HTTP)を使わずに、SharePoint リストで祝日と「特別営業日」を管理し、営業日だけ処理を実行するフローの作り方を、実際の画面つきで最初から最後まで解説します。

こんな人にオススメ
  • 定期実行フローで土日・祝日だけ処理をスキップしたい
  • プレミアムライセンスがなく、標準コネクタだけで作りたい
  • 会社独自の休業日や「祝日でも営業する日(特別営業日)」も管理したい

Power Automateの基本・料金・他の実例一覧はこちら。

あわせて読みたい
Power Automateとは?できること・使い方・始め方を実例40本で解説
Power Automateとは?できること・使い方・始め方を実例40本で解説

完成イメージ:このフローがやること

今回作るのは「平日の朝 9 時に Teams へ通知する」という定期実行フローです。中身の処理(通知)は何でも構いません。主役は「土日・祝日は動かさない」というロジックの部分です。

毎日 9 時にフローが起動しますが、当日が営業日のときだけ Teams 投稿を実行し、土日・祝日のときは何もせずに終了します。下の画像は「祝日に実行されたとき」のテスト結果で、条件のところで止まり(Terminated)、通知が送られていないことがわかります。

祝日に実行したときのフロー実行結果。条件アクションで Terminated となり処理が止まっている

フロー全体の構成

フローは次の 5 つのアクションで構成します。

  1. Recurrence(トリガー)… 毎日 9 時に起動
  2. 複数の項目の取得(SharePoint)… 祝日・特別営業日リストを取得
  3. アレイのフィルター処理… リストから「今日の日付」の行だけ抽出
  4. 条件… 当日が営業日かどうかを判定
  5. True=Teams へ投稿 / False=終了… 営業日だけ処理を実行

ポイント:なぜ「頻度=日」+条件分岐なのか

「土日除外なら、Recurrence の頻度を『週』にして曜日チェックを月〜金にすればいいのでは?」と思うかもしれません。確かに土日だけを除外するならそれでも可能です。

しかし祝日や会社独自の休業日まで除外しようとすると、曜日指定だけでは対応できません。そこで本記事では、トリガーは「頻度=日(毎日起動)」とシンプルにしておき、土日・祝日の判定はすべて条件アクション側に集約する設計にします。こうすると「営業日かどうか」の判定ロジックが 1 か所にまとまり、メンテナンスも楽になります。

頻度を「日」にした場合、Recurrence の設定画面に曜日のチェックボックスは表示されません(曜日選択は頻度「週」のときだけ表示される項目です)。土日の除外も条件式の dayOfWeek() で行うので問題ありません。

事前準備:SharePoint リストを作る

まず、祝日と特別営業日を管理する SharePoint リストを用意します。リスト名は任意ですが、ここでは 「祝日・特別営業日リスト」とします。次の列を作成してください。

リストの列構成
  • タイトル(1 行テキスト)… 「元日」「創立記念日」など名称
  • 日付(日付と時刻)… 対象の日付
  • 区分(選択肢)… 「祝日」または「特別営業日」
  • 備考(1 行テキスト・任意)… メモ用

ポイントは「区分」列です。通常の祝日や休業日は「祝日」として登録し、フローはその日を休みにします。一方、「祝日だけど出勤・営業する日」は「特別営業日」として登録すると、その日は土日祝でも処理を動かせます。

祝日は内閣府が公開している「国民の祝日」一覧を参考に、年に一度まとめて登録しておくと便利です。会社の休業日(年末年始・創立記念日など)も同じリストに「祝日」区分で追加できます。

以下の手順で SharePoint リストを一から作成します。

① リストを新規作成する

SharePoint サイトの左メニューから「サイト コンテンツ」を開きます。

SharePoint のサイト コンテンツ画面

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

+新規メニューからリストを選択する

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

「空白のリスト」を選択する画面

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

リスト名「祝日・特別営業日リスト」を入力したダイアログ

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

タイトル列だけの空白リストが作成された状態

② 「日付」列を追加する

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

列の種類選択パネルで日付と時刻を選択
日付と時刻が選択された状態

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

日付列の名前に「日付」と入力し保存ボタンが有効になった状態

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

タイトルと日付の2列が表示されたリスト

③ 「区分」列を追加する(選択肢型)

同様に「+ 列の追加」から「選択肢」を選択します。

列の種類選択パネルで選択肢を選択

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

区分列に「祝日」「特別営業日」の選択肢を設定した状態

④ 「備考」列を追加する

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

タイトル・日付・区分・備考の4列が揃った完成リスト

フローの作成手順

① スケジュール済みクラウドフローを作成する

Power Automate(make.powerautomate.com)にアクセスし、ホーム画面を開きます。

Power Automate のホーム画面

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

フローの種類でスケジュール済みクラウドフローを選択する画面

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

フロー名と繰り返し間隔を入力する初期ダイアログ

② Recurrence を設定する(毎日・日本時間・9 時)

デザイナーが開いたら、Recurrence トリガーを次のように設定します。

  • 間隔:1
  • 頻度:
  • タイム ゾーン:(UTC+09:00) 大阪、札幌、東京
  • これらの時間に:9

プレビューに「毎日 の 9:00 時に 実行する」と表示されれば OK です。

Recurrence の設定。頻度=日、タイムゾーン=日本標準時、9時に実行

タイム ゾーンを指定しないと UTC(協定世界時)基準で動き、日本時間とは 9 時間ずれます。「毎朝 9 時」のつもりが「夕方 18 時」になるので、必ず「(UTC+09:00) 大阪、札幌、東京」を選んでください。

③ SharePoint「複数の項目の取得」を追加する

次のアクションとして 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 と等しいかを判定

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

条件アクションのコードビュー。営業日判定の式の全文

⑥ True=Teams へ投稿/False=終了 を配置する

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

True 分岐に Teams のメッセージ投稿アクションを配置

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

False 分岐に終了アクションを配置し状態を Succeeded にする

True 分岐の中身は Teams 通知に限りません。メール送信・SharePoint 更新・承認依頼など、「営業日だけ動かしたい処理」なら何でも置き換えられます。

⑦ 保存する

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

フローを保存した状態とフローチェッカーの警告

テストで動作を確認する

営業日のテスト(True=通知が飛ぶ)

右上の「テスト」→「手動」を選び、フローを実行します。

テストの実行方法を選ぶダイアログ

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

フローの実行が正常に開始されたという通知

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

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) で日本時間に補正してから曜日を求めているのがポイントです。これで「土日除外」も条件式だけで完結します。

選択肢列(区分)を参照するときは ['区分/Value'] のように /Value を付けます。列の内部名が日本語と異なる場合があるので、コード ビューで実際のキー名を確認してください。

よくある質問

Q
プレミアムライセンスは必要ですか?

不要です。この構成は SharePoint・Microsoft Teams・コントロール・データ操作という標準コネクタだけで作れます。プレミアム扱いの HTTP アクションは使いません。

Q
保存時のフロー チェッカー警告は無視していいですか?

はい。SharePoint「複数の項目の取得」に OData フィルターを設定していないことへの警告ですが、当日分の絞り込みは後段の「アレイのフィルター処理」で意図的に行っているため問題ありません。エラー(赤)ではなく警告(黄)です。

Q
土日除外だけでよく、祝日は関係ありません。もっと簡単にできますか?

土日除外だけなら、Recurrence の頻度を「週」にして曜日を月〜金に絞るだけでも実現できます。祝日や会社独自の休業日まで除外したい場合に、本記事の SharePoint リスト+条件分岐の構成が効いてきます。

Q
「特別営業日」とは何ですか?

祝日や土日でも、その日は出勤・営業するためフローを動かしたい、という例外日のことです。SharePoint リストに区分=特別営業日で登録しておくと、条件式の条件B が効いてその日は処理が実行されます。

まとめ

Power Automate の定期実行で土日・祝日を除外するポイントは、トリガーは毎日起動にしておき、営業日判定は条件アクションに集約することです。祝日と特別営業日を SharePoint リストで管理すれば、プレミアムライセンスなしで、会社独自のカレンダーにも柔軟に対応できます。

まずは小さな通知フローで「営業日だけ動く」動作を確認し、慣れてきたら True 分岐の処理を実際の業務に置き換えてみてください。

あわせて読みたい

Power Automateの全体像・基本・料金・実例一覧はこちらにまとめています。

あわせて読みたい
Power Automateとは?できること・使い方・始め方を実例40本で解説
Power Automateとは?できること・使い方・始め方を実例40本で解説

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

あわせて読みたい
Power AutomateでTeamsに定期メッセージを自動投稿する方法
Power AutomateでTeamsに定期メッセージを自動投稿する方法

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

あわせて読みたい
【2026年版】Power Automateフローのエクスポート・インポート方法|ソリューションを使う新手順
【2026年版】Power Automateフローのエクスポート・インポート方法|ソリューションを使う新手順
記事URLをコピーしました