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

SharePoint REST API:GetFolderByServerRelativeUrl按修改时间过滤失败求助

SharePoint REST API按日期过滤文件夹文件失败的解决方法

问题描述

调用GetFolderByServerRelativeUrl接口时,尝试通过$filter按TimeLastModified字段过滤指定日期范围的文件,但返回了文件夹内所有项目,过滤规则未生效。使用的请求链接:

https://mycompany.sharepoint.com/sites/myTeam/_api/web/GetFolderByServerRelativeUrl('/sites/MyTeam/Shared%20Documents/My%20Project')?$expand=Files&$filter=TimeLastModified ge datetime'2023-12-11T00:00:00Z' and TimeLastModified le datetime'2024-01-05T00:00:00Z'

原因分析

直接在GetFolderByServerRelativeUrl的根路径添加$filter,实际是对文件夹对象自身的属性进行过滤,而非对扩展出来的Files集合中的文件进行过滤,因此无法筛选目标文件。

解决方案

方案1:通过文档库Items集合实现服务器端过滤(推荐)

利用文档库对应的列表项集合查询,通过FileDirRef字段定位目标文件夹,同时过滤文件的修改日期:

https://mycompany.sharepoint.com/sites/myTeam/_api/web/lists/getbytitle('Shared Documents')/items?$select=FileLeafRef,TimeLastModified,Created&$filter=FileDirRef eq '/sites/MyTeam/Shared Documents/My Project' and TimeLastModified ge datetime'2023-12-11T00:00:00Z' and TimeLastModified le datetime'2024-01-05T00:00:00Z'&$expand=File
  • FileDirRef:文件所在文件夹的服务器相对路径,用于限定查询范围到目标文件夹
  • $expand=File:可选,用于获取文件的完整属性信息
  • $select:指定需要返回的字段,减少响应数据量

方案2:先获取所有文件再客户端过滤(不推荐,大文件夹场景效率低)

若坚持使用GetFolderByServerRelativeUrl,可先获取文件夹下所有文件,再通过本地代码筛选日期范围:

https://mycompany.sharepoint.com/sites/myTeam/_api/web/GetFolderByServerRelativeUrl('/sites/MyTeam/Shared%20Documents/My%20Project')?$expand=Files($select=Name,TimeLastModified,Created)

拿到返回的Files数组后,在代码中筛选TimeLastModified处于目标区间内的项即可。

注意事项

  • 针对集合的过滤规则需添加到集合路径中(如Files?$filter=...),而非根路径
  • 日期格式必须严格遵循datetime'YYYY-MM-DDTHH:MM:SSZ'的UTC格式
  • 若需按创建日期过滤,将TimeLastModified替换为Created字段即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 00:10:19