如何实现SharePoint Online内容审批与MS Teams审批中心双向同步?
问题根源
你遇到的核心问题是:SharePoint内置内容审批和Power Automate的「First to respond」审批流是两个独立机制。在SharePoint手动操作审批时,仅更新了库的本地审批状态,但未联动Power Automate生成的Teams审批实例;而从Teams操作时,直接作用于Power Automate的审批实例,流会自动同步状态到SharePoint,因此单向同步正常。
实现双向同步的具体步骤
1. 给审批实例绑定唯一标识
在原Power Automate流的「First to respond」审批动作中,把文档ID(或文档唯一标识符)填入「自定义数据」字段,用于后续匹配对应审批实例:
@{triggerBody()?['ID']}
同时可在审批标题中加入文档名称方便识别,比如:审批请求:@{triggerBody()?['LinkTitle']}
2. 添加SharePoint状态变更的触发分支
在原流中新增一个触发条件:
- 触发动作:当项目被修改时(SharePoint触发器)
- 配置触发筛选器,仅当审批状态从待处理变为已批准/已拒绝,且不是流自身触发的修改时启动:
注:需先在SharePoint库新增一个单行文本字段「触发源」,用于标记修改来源,避免循环触发审批状态 ne '@{triggerBody()?['审批状态']}' and 触发源 eq ''
3. 匹配对应的Power Automate审批实例
添加「列出审批」动作,筛选出待处理且绑定当前文档ID的审批实例:
- 筛选条件设置为:
contains(CustomData, '@{triggerBody()?['ID']}') and Status eq 'Pending' - 取返回结果中的第一条记录(「First to respond」模式下,同一文档只会有一个待处理审批实例)
4. 更新审批实例状态
调用「更新审批」动作,传入找到的审批实例ID,根据SharePoint当前审批状态设置对应值:
- 若SharePoint状态为「已批准」,则更新审批状态为「批准」,并填入SharePoint中的审批备注作为意见
- 若为「已拒绝」,则更新为「拒绝」,同步对应审批意见
5. 标记修改来源避免循环
在流更新SharePoint状态时,把「触发源」字段设为「Power Automate」,这样流触发的修改不会再次触发自身的「当项目被修改时」分支,避免无限循环
6. 测试验证
- 提交新文档触发审批流,确认Teams审批中心收到请求
- 在SharePoint手动批准/拒绝文档,检查流是否触发、Teams审批中心状态是否同步更新、审批人是否收到完成通知
- 在Teams操作审批,确认SharePoint状态正常同步
额外提示
- 若之前依赖SharePoint内置内容审批工作流,建议关闭它,完全用Power Automate流统一处理审批逻辑,减少机制冲突
- 确保「列出审批」动作的权限足够访问对应审批实例
内容的提问来源于stack exchange,提问作者Power365
相关产品推荐
相关产品推荐

