Power Automate よく使う「トリガーの条件」式まとめ|トリガー条件式の定石(業務時間内、メールドメインなど)

Power Automateのトリガー条件式で個人的によく使ったりよく質問される条件式をメモ。

スポンサーリンク

トリガー条件式

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はスキップ。

Outlook

トリガーは「新しいメールが届いたとき」を使用。
まずは特定のメールアドレスのみ起動するよう設定すると、
メールが2つ同時に届いても、
フローは1回だけ(指定したメールアドレスのときのみ)起動。
続いて特定のドメインのみ起動するよう設定すると、
2つのドメイン(片方はgmail)空メールが届いても、
起動するのは1回(指定ドメインのみ)。

SharePoint

SharePointの実験には「新しいファイルが作成されたとき」トリガーを使用。
まずはPDFのみ起動するよう設定すると、
ファイルを2つ同時にアップロードしても、
起動は1回(PDFに対して)のみ。
続いてファイル名に「請求書」と入っているときのみ起動するよう設定すると、
2つファイルをアップロードしても、
起動するのは請求書のみ。

関連記事

コメント

タイトルとURLをコピーしました