You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何为Office 365的Microsoft Flow触发器设置日期/时间范围过滤?

在Power Automate中实现非工作时间/周末邮件的通知触发

我之前也碰到过这个问题,Power Automate(原Microsoft Flow)的「当收到新邮件」触发器确实只提供了简单的时间“等于”类条件,没法直接设置范围过滤。不过咱们可以通过后续的条件判断动作来实现需求,具体步骤如下:

1. 保留已有的人员筛选配置

先保留你已经设置好的特定人员筛选(比如在触发器里把「发件人地址」设为指定邮箱),这部分不用改动。

2. 添加条件动作判断时间范围

在触发器之后添加一个「条件」控件,我们需要设置两个判断分支,用逻辑连接——只要满足其中一个分支,就触发通知:

分支一:判断是否为周末

Power Automate里的dayOfWeek()函数可以返回日期对应的星期数(0=周日,6=周六),我们用这个来判断邮件是否在周末收到:

  • 左侧输入表达式:dayOfWeek(triggerBody()?['ReceivedDateTime'])
  • 条件选择「等于」,值填0
  • 点击「添加」,用「或」连接第二个条件:同样的表达式,值填6

分支二:判断是否为工作日的非工作时间

如果是工作日(周一到周五),我们需要判断邮件是否在工作时间之外,这里要注意先把UTC时间转成你的本地时区(比如北京时间):

  1. 先判断当天不是周末:
    • 左侧表达式:dayOfWeek(triggerBody()?['ReceivedDateTime'])
    • 条件选择「不等于」,值填0;再添加「不等于」6,用「与」连接这两个条件
  2. 再判断时间是否在工作时间外(假设你的工作时间是9:00-18:00):
    • 先把UTC时间转成本地时区:convertTimeZone(triggerBody()?['ReceivedDateTime'], 'UTC', 'China Standard Time')
    • 提取小时数:hour(convertTimeZone(triggerBody()?['ReceivedDateTime'], 'UTC', 'China Standard Time'))
    • 设置条件:这个小时数「小于9」「大于17」(因为18:00之后属于非工作时间)
  3. 把“非周末”和“非工作时间”用「与」连接,作为分支二的判断逻辑

3. 配置通知动作

在条件的「如果是」分支里,添加你需要的通知动作(比如「发送邮件通知」「推送通知到Teams/手机应用」等),把邮件相关信息(比如发件人、主题)插入到通知内容里即可。

额外提示:更精确的时间判断

如果你的工作时间不是整小时(比如8:30-17:30),可以用分钟数来计算总时长,比如:
minute(convertTimeZone(triggerBody()?['ReceivedDateTime'], 'UTC', 'China Standard Time')) + hour(convertTimeZone(triggerBody()?['ReceivedDateTime'], 'UTC', 'China Standard Time')) * 60
然后判断这个总分钟数是否小于8*60+30(即8:30)或者大于17*60+30(即17:30)。

内容的提问来源于stack exchange,提问作者John

火山引擎 最新活动