我的Google云端硬盘根文件夹中有一个名为b<bb
的文件夹。当我尝试列出标题/名称包含b<b
的文件夹时,Google云端硬盘API并不会将其返回,但是当我尝试'root' in parents and name contains 'b<bb'
时它会正常工作。
尝试发送包含查询{
"kind": "drive#fileList",
"incompleteSearch": false,
"files": []
}
的请求:
https://content.googleapis.com/drive/v3/files?q=%27root%27%20in%20parents%20and%20name%20contains%20%27b%3Cbb%27
回应是:
'root' in parents and name contains 'b<b'
尝试发送包含查询{
"kind": "drive#fileList",
"incompleteSearch": false,
"files": [
{
"kind": "drive#file",
"id": "0B8nHPp6YUJPJOU80TWFqSVpkNWM",
"name": "b\u003cbb",
"mimeType": "application/vnd.google-apps.folder"
}
]
}
的请求:
https://content.googleapis.com/drive/v3/files?q=%27root%27%20in%20parents%20and%20name%20contains%20%27b%3Cb%27
回应是:
{{1}}
使用Google Drive API V2时也会出现同样的问题。有什么建议吗?
答案 0 :(得分:1)
我确认当Drive API v2用于您的情况时,我得到了相同的结果。但是在Drive API v3中,可以使用name="b<bb"
的查询检索文件信息。另一方面,使用name contains "b<bb"
关于=
和contains
,Google会发布以下评论。
驱动器UI搜索标题与使用查询&#34; name =&#39; [filename]&#39;&#34;相同。如果您正在寻找与驱动器Web UI相同的行为,他们应该执行查询:fullText包含[filename],或者,如果您需要前缀匹配,则需要使用&#34; name&#34; s.t ... name包含[filename]此外,&#34; name = [filename]&#34;区分大小写。如果您使用运算符&#34;包含&#34;而不是&#34; =&#34;,那么它不区分大小写。
评论可以在here看到。
使用Drive API v3的示例脚本如下所示。
var url = 'https://www.googleapis.com/drive/v3/files?fields=files(id,name)&q=name=' + encodeURIComponent('"b<bb"')
var params = {
method: "GET",
headers: {"Authorization": "Bearer " + ScriptApp.getOAuthToken()},
muteHttpExceptions: true
}
var res = UrlFetchApp.fetch(url, params).getContentText();
Logger.log(res)
Logger.log(JSON.parse(res).files[0].name)
Logger.log(res)
{
"files": [
{
"id": "### file ID ###",
"name": "b\u003cbb"
}
]
}
Logger.log(JSON.parse(res).files[0].name)
b<bb
如果这些信息对您有用,我很高兴。