Power Automateのトリガー条件式で個人的によく使ったりよく質問される条件式をメモ。
トリガー条件式
Power Automateのトリガー条件式は、トリガーを実行する条件を設定できる機能。
新デザイナーだと[設定]タブから、


旧デザイナーだと[設定]メニューから指定することができる。




ちなみにこの式はアレイのフィルター処理アクションを「詳細モード」で編集するときと同じ式。


トリガー条件式を使用する大きなメリットは、フローの実行自体が発生しないため、実行回数やリソース消費を抑制できること。
![]()

自動化フロー、スケジュールされたフロー、インスタント フローの制限事項 - Power Automate
Microsoft Power Automate の自動フロー、スケジュールされたフロー、インスタント フローに適用される制限について説明します。
今回はこのトリガー条件式で個人的によく使う処理をまとめる。
日時
日時系の条件式は「スケジュール実行」のトリガーで使用することが多い。


曜日
まずは曜日。平日のみ実行したいフローや、土日のみ起動したいフロー(バッチ処理とか)によく使用。
※祝日はトリガー条件式では難しい(固定値で指定すれば不可能ではないけどめんどくさい。。)ので、祝日はフロー内の条件式ではじくことが多い。
// 月~金のみ起動 @and( greaterOrEquals(dayOfWeek(addHours(utcNow(), 9)), 1), lessOrEquals(dayOfWeek(addHours(utcNow(), 9)), 5) ) // 土、日のみ起動 @or( equals(dayOfWeek(addHours(utcNow(), 9)), 0), equals(dayOfWeek(addHours(utcNow(), 9)), 6) ) // 特定曜日のみ起動(例では水曜日のみ実行) @equals(dayOfWeek(addHours(utcNow(), 9)), 3) //dayOfWeek関数の結果:日=0, 月=1, 火=2, 水=3, 木=4, 金=5, 土=6
時間
続いて時間。業務時間内や業務時間外に実行したいフローによく使用。
// 業務時間内(例では09:00 ~ 18:00が業務時間の場合) @and( greaterOrEquals(addHours(utcNow(), 9, 'HH:mm'), '09:00'), //(時間は必ず24h形式0埋めで記載すること) lessOrEquals(addHours(utcNow(), 9, 'HH:mm'), '18:00') ) // 業務時間外 @or( less(addHours(utcNow(), 9, 'HH:mm'), '08:00'), greater(addHours(utcNow(), 9, 'HH:mm'), '18:00') )
Outlook
続いてOutlook。「新しいメールが届いたとき」トリガーで、件名に特定の文字列が入っているときのみ実行するフローや、特定の差出人から届いたメールだけフローを実行する際に使用。


// 特定の差出人(例ではsample@example.com)からのメールのみ起動 @equals(triggerOutputs()?['body/from'], 'sample@example.com') // 特定のメールアドレスが複数ある場合 @or( equals(triggerOutputs()?['body/from'], 'sample1@example.com'), equals(triggerOutputs()?['body/from'], 'sample2@example.com') ) // 特定のドメインから来たメールのみ起動 @endsWith(toLower(triggerOutputs()?['body/from']), '@example.com') // 特定のドメインが複数ある場合 @or( endsWith(toLower(triggerOutputs()?['body/from']), '@example.com'), endsWith(toLower(triggerOutputs()?['body/from']), '@example.org') ) // 件名に特定の文字列(例では「請求書」)を含む場合のみ起動 @contains(triggerOutputs()?['body/subject'], '請求書')
SharePoint, OneDrive
SharePointやOneDriveでは主にドキュメントライブラリに、特定の拡張子のファイルや、特定の文字列を名前に含むファイルがアップロードされたときのみ起動するフローに使用。


// 特定の拡張子(例では.pdf)のときのみ起動 @endsWith(toLower(triggerOutputs()?['body/{FilenameWithExtension}']), '.pdf') // 特定の文字列(例では「請求書」がファイル名に含まれる場合のみ起動 @contains(triggerOutputs()?['body/{FilenameWithExtension}'], '請求書')
以降はそれぞれの式の動作確認。興味のある方のみどうぞ。
動作確認
日時
日時の動作確認用に、1分で起動するスケジュールトリガーを用意。


曜日
まずはトリガー条件式に「月~金」のみ実行するよう設定し、


5/29(木)にテストすると、フローが起動する。


対して、土日のみ起動するよう設定すると、


木曜日なので起動しなくなる。


時間
続いて「08:00 ~ 22:05」のみ起動するよう設定すると、


22:06以降は起動しない。


対して22:10より後に起動するよう設定すると、


22:11以降に起動し始める。
※フロー保存のタイミングにより22:11はスキップ。

※フロー保存のタイミングにより22:11はスキップ。

Outlook
トリガーは「新しいメールが届いたとき」を使用。


まずは特定のメールアドレスのみ起動するよう設定すると、


メールが2つ同時に届いても、


フローは1回だけ(指定したメールアドレスのときのみ)起動。


続いて特定のドメインのみ起動するよう設定すると、


2つのドメイン(片方はgmail)空メールが届いても、


起動するのは1回(指定ドメインのみ)。


SharePoint
SharePointの実験には「新しいファイルが作成されたとき」トリガーを使用。


まずはPDFのみ起動するよう設定すると、


ファイルを2つ同時にアップロードしても、


起動は1回(PDFに対して)のみ。


続いてファイル名に「請求書」と入っているときのみ起動するよう設定すると、


2つファイルをアップロードしても、


起動するのは請求書のみ。


コメント