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

能否通过Graph API获取SharePoint列表项的已审批版本?

关于Graph API获取SharePoint列表所有已审批版本的问题

首先直接给出结论:目前Graph API没有原生支持一次性拉取列表所有项已审批版本的端点或筛选逻辑,你当前使用的/items/${itemId}/versions?expand=fields是获取单条项版本的唯一官方方式,但可以通过批量请求优化,减少重复HTTP调用的开销。

可行的优化方案

  • 使用Graph API批量请求(Batch Requests)
    把多个单条项的版本查询打包成一个HTTP请求发送,避免逐个发起请求。比如构造包含多个目标项版本查询的批量请求,同时在每个请求里直接过滤已审批版本($filter=fields/_ModerationStatus eq 0),一次请求就能获取多个项的符合要求的版本数据。
    简化版批量请求结构示例:

    {
      "requests": [
        {
          "id": "1",
          "method": "GET",
          "url": "/sites/{site-id}/lists/{list-id}/items/1/versions?expand=fields&$filter=fields/_ModerationStatus eq 0"
        },
        {
          "id": "2",
          "method": "GET",
          "url": "/sites/{site-id}/lists/{list-id}/items/2/versions?expand=fields&$filter=fields/_ModerationStatus eq 0"
        }
      ]
    }
    

    注意:每个批量请求最多包含20个独立请求,超过上限需要拆分多批发送。

  • 先筛选目标项再批量查询
    先通过/sites/{site-id}/lists/{list-id}/items?$filter=fields/_ModerationStatus eq 0 or fields/_ModerationStatus eq 2(请根据你实际的待审批状态值调整eq 2部分),获取所有当前状态为已审批或待审批的项,再针对这些项的ID发起批量版本查询,避免无意义地查询没有版本变更的项。

额外说明

如果你的场景对效率要求极高,也可以考虑使用SharePoint原生REST API的/_api/web/lists/getbytitle('ListName')/items?$expand=Versions端点,但该方案不属于Graph API范畴,且同样需要自行处理版本过滤逻辑;若必须使用Graph API,批量请求仍是最实用的优化方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 12:45:58