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

SharePoint Graph API endsWith查询失效,如何实现文件名包含/后缀匹配?

SharePoint文件查询:解决Microsoft Graph API中endsWith失效与search过滤异常问题

问题根源

Microsoft Graph API针对SharePoint的driveItem资源,$filter仅支持有限的字符串函数,endsWith不在支持列表中,直接使用会触发404错误;而$search参数若不指定搜索字段,会默认遍历文件所有元数据(如内容、描述等),导致过滤不符合预期。

具体解决方案

1. 文件名包含指定字符(如包含'Data')

直接使用Graph支持的contains函数即可实现:

GET /sites/{site-id}/drive/items/{folder-id}/children?$filter=contains(name, 'Data')

2. 文件名后缀匹配(如匹配'.xlsx'结尾)

用substring结合length函数模拟endsWith的效果,注意根据后缀长度调整参数:

GET /sites/{site-id}/drive/items/{folder-id}/children?$filter=length(name) ge 5 and substring(name, length(name)-5) eq '.xlsx'

注:5是.xlsx的字符长度,length(name) ge 5用于避免文件名长度不足时触发错误。

3. 文件名以指定字符串结尾(如以'Test'结尾)

同样采用substring+length的组合方式:

GET /sites/{site-id}/drive/items/{folder-id}/children?$filter=length(name) ge 4 and substring(name, length(name)-4) eq 'Test'

注:4是'Test'的字符长度,需根据目标字符串调整。

4. 修复$search参数的过滤问题

若偏好使用$search,需明确指定搜索字段为name,避免全局搜索:

GET /sites/{site-id}/drive/items/{folder-id}/children?$search="name:Data"

额外注意事项

  • 确保请求拥有足够权限(如Files.Read或Files.ReadWrite)。
  • 若文件数量极大,API端过滤效率优先;若数量较少,也可先获取全量文件后在客户端本地筛选。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 16:27:15