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

使用MS Graph查询API在OneDrive搜索文件遇问题求助

问题分析与解决方案

1. Query API 调用错误

你使用的 /me/drive/root:/Brendan:/children/query 端点不存在,这是触发 itemNotFound 错误的直接原因——Microsoft Graph 中没有针对 children 集合的 query 子端点。

要在指定目录内搜索文件,正确做法是使用目录项的**search 专用端点**,请求格式如下:

GET https://graph.microsoft.com/v1.0/me/drive/root:/Brendan:/search(q='bren')

该端点会返回目标目录下名称或内容包含关键词 bren 的所有文件。

如果需要使用批量查询(即你尝试的多请求格式),应调用根级 /query 端点,并在请求中指定目标目录的搜索路径,示例请求体:

{
    "requests": [
        {
            "url": "/me/drive/root:/Brendan:/search(q='bren')",
            "method": "GET"
        }
    ]
}

2. $filter 功能限制

OneDrive 对 driveItem 集合的 $filter 有严格限制:仅 startswith(name, 'xxx') 是官方支持的过滤条件,endswith 和 contains 并不被支持,因此调用这两个条件时会返回 itemNotFound 错误。

替代方案:

  • 使用前文提到的 search 端点实现模糊匹配
  • 先获取目录下所有文件(/me/drive/root:/Brendan:/children),再在本地进行 endswith 或 contains 过滤

3. $search 参数使用错误

$search 参数不能直接附加在 /children 端点后,该端点不支持此参数,因此请求会忽略 $search 并返回全部文件。

正确的搜索方式是使用目录的 search 专用端点:

// 搜索名称包含bren1.txt的文件
GET https://graph.microsoft.com/v1.0/me/drive/root:/Brendan:/search(q='bren1.txt')

// 按名称精确匹配(结合搜索语法)
GET https://graph.microsoft.com/v1.0/me/drive/root:/Brendan:/search(q='name:"bren1.txt"')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 03:57:46