我正在使用 Google Drive API 在个人和共享云端硬盘中搜索包含特定文本的文件。在个人和共享云端硬盘上搜索时,我的查询工作正常,但当我仅指定共享云端硬盘时,无法返回结果。我正在使用 Google Drive v3 API。我注意到跨文件类型(即 Google Docs、PDF 和 DOCX)存在此问题。
我的共享驱动器中有一个带有“最高法院”文本的 PDF 文件。
我使用以下查询来搜索个人云端硬盘文件夹 (
1gMnP7mt-WQ3qEm8ldi0fSz_jPrQniZSL
) 和共享云端硬盘 (0AKlb0zenjwlyUk9PVA
)。这将返回文件:
fullText contains 'Supreme Court' and ('1gMnP7mt-WQ3qEm8ldi0fSz_jPrQniZSL' in parents or '0AKlb0zenjwlyUk9PVA' in parents) and trashed = false
curl --location 'https://www.googleapis.com/drive/v3/files?q=fullText%20contains%20%27Supreme%20Court%27%20and%20(%271gMnP7mt-WQ3qEm8ldi0fSz_jPrQniZSL%27%20in%20parents%20or%20%270AKlb0zenjwlyUk9PVA%27%20in%20parents)%20and%20trashed%20%3D%20false&fields=nextPageToken%2Cfiles(id%2Cname%2Cparents)&spaces=drive&supportsAllDrives=true&includeItemsFromAllDrives=true' \
--header 'Authorization: Bearer <ACCESS_TOKEN>'
但是,当我将查询修改为仅在共享云端硬盘中搜索时:
fullText contains 'Supreme Court' and ('0AKlb0zenjwlyUk9PVA' in parents) and trashed = false
curl --location 'https://www.googleapis.com/drive/v3/files?q=fullText%20contains%20%27Supreme%20Court%27%20and%20(%270AKlb0zenjwlyUk9PVA%27%20in%20parents)%20and%20trashed%20%3D%20false&fields=nextPageToken%2Cfiles(id%2Cname%2Cparents)&spaces=drive&supportsAllDrives=true&includeItemsFromAllDrives=true' \
--header 'Authorization: Bearer <ACCESS_TOKEN>'
它返回零结果,这不是我所期望的。
有没有人遇到类似的问题或者可以提供一些指导?
如果
0AKlb0zenjwlyUk9PVA
中的'0AKlb0zenjwlyUk9PVA' in parents
是驱动器ID(共享Drive的根文件夹ID),那么下面的查询参数怎么样?
corpora=drive&
driveId=0AKlb0zenjwlyUk9PVA&
includeItemsFromAllDrives=true&
q=fullText contains 'Supreme Court' and trashed = false&
supportsAllDrives=true
当这个查询参数用于你的显示curl命令时,下面的修改如何?
curl --location 'https://www.googleapis.com/drive/v3/files?corpora=drive&driveId=0AKlb0zenjwlyUk9PVA&includeItemsFromAllDrives=true&q=fullText%20contains%20%27Supreme%20Court%27%20and%20trashed%20%3D%20false&supportsAllDrives=true' \
--header 'Authorization: Bearer <ACCESS_TOKEN>'
如果包含双引号括起来,则 contains 运算符会匹配精确的字母数字短语。例如,如果文档的 fullText 包含字符串
,则查询 fullText contains"Hello there world"
将返回结果,但查询 fullText contains'"Hello there"'
不会返回结果。此外,由于搜索是字母数字,因此如果文档的全文包含字符串'"Hello world"'
,则查询 fullText contains"Hello_world"
将返回结果。'"Hello world"'