小于在Google云端硬盘API V2 / V3中登录文件夹名称

时间:2017-09-25 14:53:17

标签: google-drive-api

我的Google云端硬盘根文件夹中有一个名为b<bb的文件夹。当我尝试列出标题/名称包含b<b的文件夹时,Google云端硬盘API并不会将其返回,但是当我尝试'root' in parents and name contains 'b<bb'时它会正常工作。

  1. 尝试发送包含查询{ "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'
  2. 尝试发送包含查询{ "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}}
  3. 使用Google Drive API V2时也会出现同样的问题。有什么建议吗?

    enter image description here

1 个答案:

答案 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

如果这些信息对您有用,我很高兴。

相关问题