【元記事をASCII.jpで読む】

 こんにちはMicrosoft MVP(Business Applications)の松本典子です。

 Power Automate / Azure Logic Appsには、「毎日」「毎週」「毎月」など、一定のサイクルでフローを自動実行できる「繰り返し(Recurrence)」トリガーがあります。便利なので、実際に利用されている方も多いのではないでしょうか。

 しかし「もう少し細かい条件で自動実行させたい」というケースもあります。たとえば「毎月第1週目の月曜日に自動実行したい」といったケースです。「繰り返し」トリガーでできればよいのですが、簡単な条件しか設定できないため、そのままでは実現できません。

 そこで、今回は「繰り返し」トリガーをベースに、より細かい条件付きでトリガーを実行できる方法をご紹介します。

1. 「スケジュール済みクラウド フロー」とは

 Power Automate / Azure Logic Appsでは、指定した日時/間隔で自動的に実行するフローのことを「スケジュール済みクラウド フロー」と呼びます。「毎日9時にレポートをメール送信する」「毎週月曜日にTeamsへリマインダーを投稿する」など、定期的に繰り返し自動実行したい処理に最適です。

 上の新規作成画面では、次の実行条件が設定できます。

 ・開始日/時間:自動実行を開始する日時(例:2025年6月1日 午前9時)
 ・繰り返し間隔:自動実行の頻度(秒、分、時間、日、週間、カ月の単位があります)
 ・設定曜日:繰り返し間隔を「○週間」とした場合のみ、その週の何曜日に実行するかを選択

 下段の「このフローの実行頻度」に設定内容が反映されます。たとえば上図の場合は「2025年6月1日の午前9時から、毎週月曜日、水曜日、金曜日にフローを自動実行する」という設定です。

 ただし、この画面で設定できるのはこれだけなので、先述した「毎月の第1週目のみ」のような条件の指定ができません。より細かい条件で設定したい場合は、次に紹介する「トリガーの条件」を併用します。

2. トリガーの条件とは

 「トリガーの条件」は、「繰り返し」トリガーが起動したときに、その後に続くフローを実行するかどうかを判断するための条件です。

 たとえば、トリガー自体は「毎週繰り返す」設定になっていても、「トリガーの条件」で指定した「毎月の第1週目のみ」という条件を満たさなければ(指定された条件と一致しなければ)、以後のフローは実行せずに終了するという動きになります。

2-1. 「トリガーの条件」の設定方法

 「トリガーの条件」は、「繰り返し(Recurrence)」トリガーの右上にある「…」をクリックし、メニューから「設定」を選べば設定できます。

 上図の赤枠内に条件式を入力することで、細かいトリガー条件を設定できます。

2-2. 偶数日だけ実行するトリガーの条件

 「トリガーの条件」のサンプルとして、まずは簡単な「偶数日だけ実行する」条件式を設定してみます。

 上図のように、トリガー条件は「@」から始まる「式」を入力します。この式に含まれる関数の意味は、それぞれ次のとおりです。

 ・formatDateTime(utcNow(), 'dd'):今日の日付(01~31)を文字列として取得
 ・int(…):取得した日付の文字列を数値に変換
 ・mod(…, 2):数値を2で割って余りを求める
 ・equals(..., 0):余りが「0」であれば「true」

 複雑そうに見えますが、要するに「日付の数字を2で割って、余りが0ならば条件に一致(true)」という内容です。これを「奇数日だけ実行する」にしたい場合は、equals(..., 0)の「0」を「1」に書き換えればよいわけです。

 なお、Power Automate / Logic Appsで利用できる関数については、Microsoftの公式ドキュメントを参考にしてください。

 ○Azure Logic Apps および Power Automate のワークフロー式関数のリファレンス ガイド

3. 今回作成するワークフロー

 それでは、最初に取り上げた「毎月第1週目のみ」というトリガーの条件で、Power Automateのワークフローを作成してみましょう。「毎月第1週目の月曜日、午前9時に実行する」フローとします。

 今回のワークフローは上図のような形になります。「トリガーの条件」のサンプル用フローなので、アクションは「Teamsの指定チャネルにメッセージを投稿する」だけのシンプルなものです。

 なお、今回はクラシックデザイナーの画面で説明していますが、フローはモダンデザイナーでも同じように作成できます。

3-1. フローの新規作成

 Power Automateのポータル画面で、左メニューの「+作成」をクリックし、「スケジュール済みクラウド フロー」を選択します。

 開始日は、実際に繰り返しを開始したい日時よりも「前」の日時にしておきます ※注

※注:本来であれば、初回開始日時は「繰り返しを始めたい日時」そのものに合わせればよさそうですが、実際にそう設定すると正常にトリガーされないようです(実行日時がずれる)。そのため、たとえば開始前日などに設定しておくイメージです。また、フローの作成時点よりも過去の日付や、未来すぎる日付を設定すると、やはり正常にトリガーされない場合があるので注意してください。

 「毎月第1週目の月曜日」という条件なので、繰り返し間隔には「週」を選択したいところですが、ここでは「日」を選び、毎日トリガーが起動するようにします。実際のフロー実行条件は、この後の「トリガーの条件」でまとめて設定します。

 「フロー名」を入力して「作成」ボタンをクリックします。

3-2. トリガーの設定

 「繰り返し(Recurrence)」トリガーの「詳細オプションを表示する」をクリックします。表示される項目にはすでに値が入っているものもありますが、あらためて以下の内容を入力します。

 (1)タイムゾーン:「(UTC+9:00)大阪、札幌、東京」を選択
 (2)開始時刻:「2025-06-01T00:00:00.000」と入力(末尾にZを付けない ※注)  (3)設定時刻(時間):「9」にチェックを入れる
 (4)設定時刻(分):「0」を入力

※注:Power Automateの標準設定では、時刻を「UTC協定世界時)」で扱います。時刻末尾の「Z」はUTCを表す記号ですが、ここでは「タイムゾーン」で日本標準時を選択しているため、「Z」は削除します。

 続いて「トリガーの条件」を入力する画面に切り替えます。「2-1. 「トリガーの条件」の設定方法」で説明したとおり、「繰り返し(Recurrence)」トリガー右上の「…」メニューから「設定」をクリックします。

 以下の式を「トリガーの条件」にコピー&ペーストします。改行による区切りはそのままで構いません。

@and(
equals(formatDateTime(addHours(utcNow(), 9), 'dddd'), 'Monday'),
lessOrEquals(dayOfMonth(addHours(utcNow(), 9)), 7)
)

 この式に含まれる関数の意味は、それぞれ次のとおりです。

 ・and(…):以下の2つの条件式が共に「true」であれば「true」

 条件式1》
 ・addHours(utcNow(), 9):実行時点の日時を日本標準時で取得
 ・formatDateTime(…, 'dddd'):今日の曜日名(Mondayなど)を取得
 ・equals(…, 'Monday'):今日の曜日名が「Monday ※注」ならばtrue

 条件式2》
 ・dayOfMonth(…):今日の日付を数値として取得(1~31)
 ・lessOrEquals(…, 7):日付が「7以下」の場合は第1週と判断しtrue

※注:取得できる曜日名は1文字目が大文字(Monday、Tuesday……)なので、equals関数で指定する曜日名もそのようにします。小文字('monday'など)で指定すると一致しません。

 「3-2. トリガーの設定」で設定したトリガーは「毎日午前9時」に起動しますが、上記の「トリガーの条件」によって、「日本時間で月曜日、かつ日付が1~7の間(つまり第1週目)」である場合のみ、以後のフローが実行されます。

3-3. アクションの設定:日時アクション

 この後のアクションでTeamsにメッセージを投稿しますが、そのメッセージに投稿日の日付を含めたいので、「現在の時刻」アクションと「タイムゾーンの変換」アクションを設定します。

 (1)現在の時刻
 検索窓に「日時」と入力し、アクション一覧から「現在の時刻」を選択します。このアクションには設定項目はありません。

 (2)タイムゾーンの変換
 検索窓に「タイムゾーン」と入力し、アクション一覧から「タイムゾーンの変換」を選択します。次のように設定します。

 ・基準時間:動的なコンテンツ「現在の時刻」を選択
 ・書式設定文字列:年月日を投稿したいので、カスタム値を選択して「yyyy年MM月dd日」と入力
 ・変換元のタイムゾーン:「(UTC)協定世界時」を選択
 ・変換先のタイムゾーン:「(UTC+9)大阪、札幌、東京」を選択

3-4. アクションの設定:チャットまたはチャネルでメッセージを投稿する

 Teamsの指定チャネルにメッセージを投稿します。検索窓に「Teams」と入力し、アクション一覧から「チャットまたはチャネルでメッセージを投稿する」を選択します。

 メッセージの投稿先、チーム、チャネルは適宜選択してください。

 メッセージに、「タイムゾーンの変換」アクションの動的なコンテンツ「変換後の時間」を選択すると、フローの実行日が「2025年6月28日」といった形で投稿できます。

 以上でフローが完成しました。「3-1. フローの新規作成」でフローに名前を付けましたが、最後には忘れずに「保存」します。

さいごに

 今回は「トリガーの条件」を設定する方法をご紹介しました。

 「トリガーの条件」を活用することで、単純な繰り返しではない特定の条件を満たしたときにだけフローを実行させるという、柔軟な制御が可能になります。条件を満たさない際は、フローの実行自体がスキップされ、不要な処理を省くことができるのも大きなメリットです(フローの実行履歴には「スキップ済み」と記録されます)。

 ただし、「トリガーの条件」の設定には関数を含む条件式を書く必要があるため、少し複雑になると「想定していたとおりにフローが実行されない」(あるいは「想定外のタイミングで実行された」)というトラブルにつながることもあります。フローの完成後も、正しいタイミングで実行されているかどうかをしっかり確認しましょう。

 繰り返し自動実行の条件を細かくコントロールできるのは、とても便利だと思います。ぜひ試して、活用してみてください!

参考URL

 ○スケジュールに従ったフローの実行

Power Automateの「トリガーの条件」が便利! フローの繰り返し実行を細かく制御しよう