如何在文档库中搜寻SharePoint文件

3
我试图使用 GET https://graph.microsoft.com/v1.0/sites/root/drive/root/search(q='text file') 在 SharePoint 中搜索文件,但它只在根站点中搜索。有没有办法使用 Graph API 搜寻整个文档库?
类似于POST https://graph.microsoft.com/v1.0/search/query。该端点可以搜寻整个文档库中的文件。
是否可能在GET api调用中实现POST api调用的行为?因为来自POST api调用的响应不提供关于文件 MIME 类型的信息,所以我需要切换到GET api调用。

如果您在驱动器而不是根目录上调用搜索会怎样呢? GET https://graph.microsoft.com/v1.0/sites/root/drive/search(q='text file') - user2250152
不行。即使这样也不行,它的行为是一样的。我有很多网站,但这个不能搜索其他网站的文件。@user2250152 - WSI Appfactory
1个回答

2
你可以在响应中指定想要的字段,作为 fields 子属性的一部分。指定 mimeType。
要检索 driveItem 的自定义属性,请查询 listItem。
POST https://graph.microsoft.com/v1.0/search/query

请求体
{
    "requests": [
        {
            "entityTypes": [
                "listItem"
            ],
            "query": {
                "queryString": "text file"
                // filter by contentClass
                //"queryString": "text file contentclass:STS_ListItem_DocumentLibrary"
            },
            "fields": [
                "id",
                "fileName",
                "contentClass",
                "createdDateTime",
                "lastModifiedDateTime",
                "webUrl",
                "sharepointIds",
                "createdBy",
                "modifiedBy",
                "parentReference",
                "mimeType",
                "fileType"
            ]
        }
    ]
}

指定选择属性


很酷,谢谢@user2250152。这很有道理,但是在此响应中缺少“名称”,我们不能使用“listItem”获取文件/文件夹的名称吗? 而且,我们是否可以限制在此搜索中仅搜索SharePoint文件,而不是OneDrive文件? - WSI Appfactory
@WSIAppfactory 更新了答案并添加了“fileName”字段。我不确定是否可以仅过滤SharePoint文件。尝试添加contentClass字段并尝试通过contentClass进行过滤。 - user2250152
API调用返回的webUrl看起来像是downloadUrl,它可以下载特定的文件/文档。有没有办法获取previewUrl(打开特定文档/文件的URL)? - WSI Appfactory

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接