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
我需要在 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