我需要在.docx
中搜索扩展名为OneDrive
的文件。所以这一点很简单,它可以使用OneDrive搜索API。不起作用的部分是响应中的每个DriveItem
,我还需要在与此ListItem.Fields
相关联的DriveItem
下创建的自定义属性。这些自定义属性包含创建某种报告所需的信息。
扩展ListItem
似乎可以在root/children
资源上运行而无需任何搜索,但它无法解决我的问题,我需要文件名中包含.docx扩展名的文件,这些文件可以在root下或根目录下的任何子文件夹。
因此,此请求返回带有响应的CustomProperty
/_api/v2.0/drives/[drive id]/root/children?select=*%2cwebDavUrl
%2csharepointIds&expand=listItem(select%3dfields%3bexpand%3dfields(select%3dCustomProperty))
但是,当我尝试在搜索查询返回的ListItem
上展开DriveItems
时,如下所示:
/_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."}}
在ListItem.Fields
搜索API中不支持DriveItem
上展开OneDrive
吗?
如果不是,那么我有另一种方式来实现我想要做的事吗?我不是要尝试搜索CustomProperty
,只是希望将该值作为响应的一部分与其关联的DriveItem
一起检索。
如果我通过Microsoft Graph
搜索api而不是OneDrive
api运行此操作,我会得到相同/类似的错误。
我能做的一个解决方法,
首先搜索没有expand关键字的.docx
文件,它会递归搜索并返回.docx
中的所有OneDrive
个文件。然后,我可以使用OneDrive
和展开的DriveItem.Id
属性逐个拨打ListItem.Fields
来逐个请求这些项目。那将是一个可怕的解决方法。因为我不是在单个请求中实现我需要的,而是必须生成1000或10000个单独的I / O请求(每个.docx文件一个)以获得扩展的ListItem
属性。
答案 0 :(得分:1)
这是一个known issue端点/search
。不幸的是,目前还没有一个好的解决方法。要检索ListItem
资源,您需要直接从搜索结果中检索每个DriveItem
:
/drives/{drive-id}/items/{item-id}?$expand=listItem