You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power Automate 循环触发器:如何实现每月最后5个工作日触发流程

Power Automate 每月最后5个工作日运行方案

你可以直接基于原有查找最后1个工作日的逻辑调整,无需复杂改动,适配所有特殊月份,方案如下:

核心优化逻辑

原有逻辑是找到1个月末工作日就停止,现在改成找到5个月末工作日再停止,最后判断当日是否属于这5个工作日即可。

具体操作步骤

  1. 触发规则保持每日定时触发不变
  2. 初始化4个变量:
    • 当前日期:类型为字符串,值为你所在时区的当日日期,国内用户可用表达式 convertTimeZone(utcNow(), 'UTC', 'China Standard Time', 'yyyy-MM-dd')
    • 倒推日期:类型为日期,初始值为下月第一天,表达式为 startOfMonth(addToTime(variables('当前日期'), 1, 'Month'))
    • 工作日计数:类型为整数,初始值为0
    • 月末工作日列表:类型为数组,初始值为空
  3. 添加「DO UNTIL」循环,设置终止条件为 工作日计数 等于 5
  4. 循环内第一步:更新倒推日期为当前值减1天,表达式:addDays(variables('倒推日期'), -1, 'yyyy-MM-dd')
  5. 循环内添加判断条件:dayOfWeek(variables('倒推日期')) 不等于 0 且 dayOfWeek(variables('倒推日期')) 不等于 6,排除周六周日
    • 条件成立:将当前倒推日期加入月末工作日列表,同时将工作日计数加1
    • 条件不成立:不做任何操作,进入下一轮循环
  6. 循环结束后,添加判断条件:当前日期 包含在 月末工作日列表中
    • 条件成立:执行你的业务逻辑
    • 条件不成立:直接结束流程

你现有测试方案的问题修正

你目前的方案设置的循环终止条件、日期校验逻辑冗余,调整2点即可正常运行:

  • 把DO UNTIL终止条件从varCounter = 7改成已匹配的工作日数量 = 5,不需要固定循环7次
  • 无需在循环内校验是否为当日,先收集齐5个月末工作日再统一判断,逻辑更清晰,不容易出错

用到的核心表达式参考

// 国内时区当日日期
convertTimeZone(utcNow(), 'UTC', 'China Standard Time', 'yyyy-MM-dd')
// 获取下月第一天
startOfMonth(addToTime(variables('当前日期'), 1, 'Month'))
// 工作日判断
@and(not(equals(dayOfWeek(variables('倒推日期')), 0)), not(equals(dayOfWeek(variables('倒推日期')), 6)))

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 20:54:03