如何配置Azure Logic App Recurrence Trigger每月最后一个周一运行?
实现Azure Logic App每月最后一个周一触发的方案
核心思路
用**Recurrence触发器+触发条件(Trigger Condition)**实现:先让触发器每周一运行,再通过表达式判断当天是否为当月最后一个周一,只有满足条件时才执行后续逻辑。
具体步骤
- 创建Recurrence触发器,配置为每周一运行,设置你需要的具体执行时间(比如上午9:00)。
- 点击触发器的「添加触发器条件」,粘贴以下表达式:
@equals(formatDateTime(utcNow(), 'yyyy-MM-dd'), formatDateTime(addDays(lastDayOfMonth(utcNow()), if(equals(dayOfWeek(lastDayOfMonth(utcNow())),0), -6, sub(1, dayOfWeek(lastDayOfMonth(utcNow()))))), 'yyyy-MM-dd'))
表达式拆解
lastDayOfMonth(utcNow()):Azure内置函数,直接获取当前月份的最后一天,比你之前的表达式更简洁可靠。dayOfWeek(...):返回目标日期的星期数(0=周日,1=周一,2=周二…6=周六)。if(equals(dayOfWeek(...),0), -6, sub(1, dayOfWeek(...))):- 如果当月最后一天是周日(0),往前推6天就是当月最后一个周一;
- 如果最后一天是周一到周六,往前推「星期数-1」天即可得到最后一个周一(比如最后一天是周三,推2天到周一)。
formatDateTime(...):统一将日期格式化为yyyy-MM-dd,避免时间部分干扰日期比较。
额外说明
- 非最后一个周一的时候,触发器会触发但不会执行后续步骤,这类触发不会产生Logic Apps执行费用。
- 你可以直接在Logic Apps的表达式编辑器中测试该表达式,验证不同月份的计算结果是否正确。
内容的提问来源于stack exchange,提问作者geojoe
相关产品推荐
相关产品推荐

