Power Automate 触发条件公式速查表:即用示例(工作时间 & 邮件过滤)

发布: (2025年12月25日 GMT+8 21:08)
5 分钟阅读
原文: Dev.to

Source: Dev.to

请提供您希望翻译的具体文本内容(文章正文),我将为您翻译成简体中文并保留原有的格式、Markdown 语法以及代码块和 URL。谢谢!

触发条件

Power Automate 触发条件让您指定触发器何时应触发。在新设计器中,它们位于 Settings 选项卡下;在经典设计器中位于 Settings 菜单下。语法与 高级模式 下的 “Filter array” 操作相同。

使用触发条件可在条件不满足时完全阻止流程执行,从而降低运行次数和资源消耗。

了解有关限制和配置的更多信息


日期和时间

日期和时间公式最常与 Scheduled 触发器一起使用。

// Example: add 9 hours to UTC now (adjust for your time zone)
addHours(utcNow(), 9)

星期几

这些公式对于只在工作日、周末或特定日期运行的流程非常实用。

// Only run from Monday to Friday
@and(
  greaterOrEquals(dayOfWeek(addHours(utcNow(), 9)), 1),
  lessOrEquals(dayOfWeek(addHours(utcNow(), 9)), 5)
)
// Only run on Saturday and Sunday
@or(
  equals(dayOfWeek(addHours(utcNow(), 9)), 0),
  equals(dayOfWeek(addHours(utcNow(), 9)), 6)
)
// Only run on a specific day (Wednesday)
@equals(dayOfWeek(addHours(utcNow(), 9)), 3)

dayOfWeek 的结果:星期日 = 0,星期一 = 1,星期二 = 2,星期三 = 3,星期四 = 4,星期五 = 5,星期六 = 6。

注意: 公共假期在触发条件中难以处理;它们通常在流程内部进行过滤。


时间

使用这些公式将执行限制在工作时间内或工作时间外。

// Within business hours (09:00 – 18:00)
@and(
  greaterOrEquals(addHours(utcNow(), 9, 'HH:mm'), '09:00'),
  lessOrEquals(addHours(utcNow(), 9, 'HH:mm'), '18:00')
)
// Outside business hours
@or(
  less(addHours(utcNow(), 9, 'HH:mm'), '08:00'),
  greater(addHours(utcNow(), 9, 'HH:mm'), '18:00')
)

时间字符串必须使用带前导零的24小时制。

Outlook

针对基于电子邮件的流的触发条件。

// Only trigger for a specific sender
@equals(triggerOutputs()?['body/from'], 'sample@example.com')
// Multiple specific senders
@or(
  equals(triggerOutputs()?['body/from'], 'sample1@example.com'),
  equals(triggerOutputs()?['body/from'], 'sample2@example.com')
)
// Only trigger for a specific domain
@endsWith(toLower(triggerOutputs()?['body/from']), '@example.com')
// Multiple domains
@or(
  endsWith(toLower(triggerOutputs()?['body/from']), '@example.com'),
  endsWith(toLower(triggerOutputs()?['body/from']), '@example.org')
)
// Subject contains a keyword (e.g., "invoice")
@contains(triggerOutputs()?['body/subject'], 'invoice')

SharePoint 与 OneDrive

将基于文件的触发器限制为特定的扩展名或文件名模式。

// Only for .pdf files
@endsWith(toLower(triggerOutputs()?['body/{FilenameWithExtension}']), '.pdf')
// Filename contains specific text (e.g., "invoice")
@contains(triggerOutputs()?['body/{FilenameWithExtension}'], 'invoice')

测试

一种快速验证每个条件的方法是使用每分钟运行一次的 Scheduled 触发器,并观察流程是否触发。

场景测试设置预期结果
仅工作日使用 “Monday‑to‑Friday” 条件流程在周一至周五运行,周六、周日不运行
仅周末使用 “Saturday‑and‑Sunday” 条件流程在周六、周日运行,工作日不运行
工作时间使用 “09:00‑18:00” 条件流程在 09:00 到 18:00 之间运行(本地调整时间)
非工作时间使用 “outside hours” 条件流程在 09:00 前或 18:00 后运行
特定发件人使用发件人条件 sample@example.com仅当收到来自该地址的邮件时触发流程
特定域使用域条件 @example.com仅当邮件来自该域时触发流程
文件扩展名在 SharePoint “When a file is created” 触发器上使用 .pdf 条件仅当上传 PDF 时触发流程
文件名包含在相同触发器上使用 invoice 条件仅当文件名包含 “invoice” 时触发流程

在测试时,您可能会注意到保存流程后有一分钟的延迟;这是正常的,因为触发条件在流程持久化后才会被评估。

Back to Blog

相关文章

阅读更多 »