Power Automate中SharePoint文件触发器recurrence设置失效问题求助
问题根源
你使用的When a file is created or modified (properties only)是事件驱动型触发器,界面中的"How often do you want to check for items?"并非控制流的执行频率,而是设置Power Automate平台多久轮询一次SharePoint的事件日志。即使你设为1天间隔,平台仍会在检测到文件变更事件时立即触发流;而间隔自动重置为1秒,是因为平台对事件驱动触发器的轮询间隔有默认限制,不允许设置过长的间隔,会自动修正。
正确解决方案:定时触发器+批量获取文件
改用定时触发+主动扫描当日文件的模式,确保每日仅发送一封汇总邮件,步骤如下:
替换触发器
删除原有的事件触发器,添加Recurrence(定时触发器),配置参数:- 频率:
Day - 间隔:
1 - 时区:
New Zealand Standard Time - 开始时间:设置你希望每日执行的时间(如
2024-10-14T12:00)
- 频率:
获取当日待签文件
添加SharePoint - Get files (properties only)动作,配置你的站点地址和目标文件夹路径/Shared Documents/Contracting/DocumentsToSign/Simon。
在Filter Query中输入OData筛选条件,仅获取当日创建/修改的文件(根据需求选择Created或Modified字段):Created ge '@{startOfDay(convertTimeZone(utcNow(), 'UTC', 'New Zealand Standard Time'))}' and Created le '@{endOfDay(convertTimeZone(utcNow(), 'UTC', 'New Zealand Standard Time'))}'(注:若按修改时间筛选,将
Created替换为Modified即可)判断是否需要发送邮件
添加Condition动作,检查上一步获取的文件列表是否为空:- 左侧输入:
length(body('Get_files_(properties_only)')?['value']) - 运算符:
is greater than - 右侧输入:
0
- 左侧输入:
构建汇总邮件内容
在Condition的"Yes"分支中,添加Compose动作,用HTML格式构建邮件内容,示例:<p>以下是今日待签合同:</p> <ul> @{join(xpath(xml(json(concat('{"root":', body('Get_files_(properties_only)')?['value'], '}'))), '/root/value/FileLeafRef/text()'), '<li>')} </ul>(也可手动遍历文件列表,拼接文件名和文件链接)
发送汇总邮件
添加Send an email (V2)动作,将构建好的内容填入邮件正文,收件人设置为合同签署责任人。
备选方案:事件触发+延迟合并(不推荐)
如果坚持使用原触发器,可通过延迟+变量存储实现汇总,但可靠性较低:
- 添加
Initialize variable动作,创建字符串变量存储待签文件列表 - 触发器触发后,将当前文件信息追加到变量中
- 添加
Delay until动作,设置为当日固定时间(如18:00) - 延迟结束后,检查变量内容并发送汇总邮件
- 注意:需开启流的并发控制,设置为"允许并行运行"避免变量被覆盖,但仍可能出现重复发送或漏发情况,不如定时方案稳定。
内容的提问来源于stack exchange,提问作者Simon

