OneDrive 搜索 api 不支持对 ListItems 展开查询

OneDrive Search api does not support Expand query on ListItems

我需要在 OneDrive 中搜索扩展名为 .docx 的文件。所以这一点很简单,它可以使用 OneDrive 搜索 api。不起作用的部分是,在响应中,对于每个 DriveItem,我还需要我们在 ListItem.Fields 下创建的与此 DriveItem 关联的自定义属性。这些自定义属性包含我需要创建某种报告的信息。

扩展 ListItem 似乎无需任何搜索就可以在 root/children 资源上工作,但这并没有解决我的问题,我需要文件名中带有 .docx 扩展名的文件,这些文件可以是在根目录下或根目录下的任何子文件夹下。

所以这个请求 return 是带有响应的 CustomProperty

/_api/v2.0/drives/[drive id]/root/children?select=*%2cwebDavUrl
%2csharepointIds&expand=listItem(select%3dfields%3bexpand%3dfields(select%3dCustomProperty))

但是当我尝试在 DriveItems return 上扩展 ListItem 时,如下所示:

/_api/v2.0/drives/[drive id]/root/search(q='docx')?select=*%2cwebDavUrl%2csharepointIds&expand=listItem(select%3dfields%3bexpand%3dfields(select%3dCustomProperty))

我得到一个错误:

Error: {"error":{"code":"notSupported","message":"The request is not supported by the system."}}

OneDrive 搜索 api 不支持在 DriveItem 上扩展 ListItem.Fields

如果不是,那么有没有其他方法可以让我在这里实现我想做的事情?我不是要在 CustomProperty 上搜索,只是想检索该值作为响应的一部分及其关联的 DriveItem

如果我 运行 通过 Microsoft Graph 搜索 api 而不是 OneDrive api,我会得到 same/similar 错误。

我可以做的一个解决方法, 就是先搜索不带expand关键字的.docx个文件,然后递归搜索return我OneDrive中的所有.docx个文件。然后,我可以使用它们的 DriveItem.Id 和扩展的 ListItem.Fields 属性 从 OneDrive 中逐一请求这些项目。不过,那将是一个糟糕的解决方法。因为不是在单个请求中实现我需要的,我必须发出 1000 或 10000 个单独的 I/O 请求(每个 .docx 文件一个)以获得扩展的 ListItem 属性..

这是一个带有 /search 端点的 known issue。不幸的是,目前也没有好的解决方法。为了检索 ListItem 资源,您需要直接从搜索结果中检索每个 DriveItem

/drives/{drive-id}/items/{item-id}?$expand=listItem