需要使用图形 API 搜索 SharePoint 中的文件名 EndsWith 不起作用,如何使用图形 API 搜索文件名包含或结尾?
成功:输出响应将仅列出以“Test”开头的文件:
https://graph.microsoft.com/v1.0/sites/siteId/drive/root:/directoryName1/directoryName2:/children?$filter=startsWith(name, 'Test')
成功:收到的输出响应为 404 未找到
https://graph.microsoft.com/v1.0/sites/siteId/drive/root:/directoryName1/directoryName2:/children?$filter=endsWith(name, 'Test')
输出响应:
{
"error": {
"code": "itemNotFound",
"message": "Item not found",
"innerError": {
"date": "2023-xxxxx",
"request-id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"client-request-id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
错误结果:未找到项目
https://graph.microsoft.com/v1.0/sites/siteId/drive/root:/directoryName1/directoryName2:/children?$filter=endsWith(name, 'Data.xlsx')
回复:
{ “错误”: { “代码”:“未找到项目”, "message": "未找到项目", “内部错误”:{ “日期”:“2023-xxxxx”, "请求 ID": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", “客户端请求 ID”:“xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx” } } }
输出响应将包含目录中的所有文件
https://graph.microsoft.com/v1.0/sites/siteId/drive/root:/directoryName1/directoryName2:/children?search(q='Data')
输出响应将包含目录中的所有文件
https://graph.microsoft.com/v1.0/sites/siteId/drive/root:/directoryName1/directoryName2:/children
目录视图:
TestData.xlsx
SampleWorkbook.xlsx
...
...
...
是的,儿童端点不支持
$filter
和 endsWith
。根据 本文,/search
端点将不再收到任何更新或增强功能。
目前最好的替代方案似乎是 Microsoft Search API。
我可以举几个例子。
在特定 SharePoint 网站和共享文档的特定子文件夹中搜索文件名中包含术语
Test
的文件
POST https://graph.microsoft.com/v1.0/search/query
{
"requests": [
{
"entityTypes": [
"driveItem"
],
"query": {
"queryString": "filename:Test AND path:\"https://tenant.sharepoint.com/sites/{site_name}/Shared documents/directoryName1/directoryName2\""
}
}
]
}
搜索以
Test
开头的文件
"queryString": "filename:Test* AND path:\"https://tenant.sharepoint.com/sites/{site_name}/Shared documents/directoryName1/directoryName2\""
搜索以
.xlsx
开头的
Test
文件
"queryString": "filename:Test*.xlsx AND path:\"https://tenant.sharepoint.com/sites/{site_name}/Shared documents/directoryName1/directoryName2\""
搜索具有确切名称的文件
Data.xlsx
"queryString": "filename=Data.xlsx AND path:\"https://tenant.sharepoint.com/sites/{site_name}/Shared documents/directoryName1/directoryName2\""