使用Microsoft Graph PATCH请求修改SharePoint列表项_ModerationStatus遇异常
我之前踩过这个坑——直接用PATCH请求修改_ModerationStatus这个系统字段是行不通的,因为它是关联文档审批工作流的受控元数据,Graph API不允许直接通过常规列表项更新来修改它。得用专门的审批操作端点才行,下面给你详细的解决步骤:
1. 先确认权限是否足够
要修改审批状态,你需要具备:
- SharePoint端的库完全控制权限或者站点管理员权限
- Graph API权限:应用权限需
Sites.FullControl.All,委派权限需Sites.Manage.All(普通编辑权限不足以操作审批状态)
2. 使用专门的审批操作API,而非直接PATCH列表项
批准文档
发送POST请求到以下端点:
https://graph.microsoft.com/v1.0/sites/{siteId}/lists/{listId}/items/{itemId}/approve
请求体可添加审批备注(可选):
{ "comment": "已确认文档符合要求,予以批准" }
拒绝文档
发送POST请求到以下端点:
https://graph.microsoft.com/v1.0/sites/{siteId}/lists/{listId}/items/{itemId}/reject
请求体示例:
{ "comment": "文档缺少必要的合规说明,予以拒绝" }
设置特定的审批状态(如待审批、暂存等)
如果需要将文档设置为其他审批状态(比如提交审批、暂存草稿),可以用setModerationStatus方法,发送POST请求到:
https://graph.microsoft.com/v1.0/sites/{siteId}/lists/{listId}/items/{itemId}/setModerationStatus
请求体中指定状态值(对应_ModerationStatus的枚举):
{ "status": 2, // 状态枚举:0=已批准,1=拒绝,2=待审批,3=已安排,4=已草稿,5=已暂存 "comment": "将文档提交至审批流程" }
为什么直接PATCH不行?
_ModerationStatus是SharePoint系统维护的内部字段,它和文档审批工作流的状态深度绑定。直接修改这个字段会触发系统的安全校验,导致API返回异常——只有通过官方提供的审批操作端点,才能保证工作流状态和元数据同步更新。
内容的提问来源于stack exchange,提问作者Alberto Martin
相关产品推荐
相关产品推荐

