如何过滤Google Drive API v3 mimeType?

C02

我编写了一个脚本,该脚本使用DriveApp读取Google Drive,使用SpreadsheetApp在Sheets中记录数据,并使用Google Drive API v3 +服务帐户+ OAuth代表G Suite用户进行更改。

从目标用户角度(称为Google Drive API v3)搜索Google云端硬盘,而不是运行脚本的帐户(称为DriveApp),这将是不错的选择。我无法使用过滤器。

该查询是使用父文件夹键mimeType =mimeType !=文件夹构建的,并传递到函数中。格式为:

var query = "('GoogleDriveFolderKey01' in parents or 'GoogleDriveFolderKey02' in parents) and trashed = false and mimeType = 'application/vnd.google-apps.folder'"

DriveApp函数使用:

files = Drive.Files.list({
  q: query,
  maxResults: 100,
  pageToken: pageToken
});

Google Drive API v3函数使用:

var url = 'https://www.googleapis.com/drive/v3/files/'
var options = {
  'contentType': 'application/json',
  'method'     : 'get',
  'headers'    : { Authorization: 'Bearer ' + service.getAccessToken() },
  'muteHttpExceptions': true,
  'corpora'    : 'domain',
  'q'          : query,
  'spaces'     : 'drive',
  'pageSize'   : 100,
  'pageToken'  : pageToken
};
var response = UrlFetchApp.fetch(url, options);

var resultParsed = JSON.parse(response.getContentText());
files = resultParsed.files
pageToken = resultParsed.pageToken

DriveApp的结果符合预期,但是Google Drive API v3的结果是:

"files": [
{
  "kind": "drive#file",
  "id": "01abc123_etc",
  "name": "Something something (2021-04-15).pdf",
  "mimeType": "application/pdf"
},
{
  "kind": "drive#file",
  "id": "02ABC4321-qwertyuiop",
  "name": "Super Special Worksheet",
  "mimeType": "application/vnd.google-apps.spreadsheet"
},
{
  "kind": "drive#file",
  "id": "whatever",
  "name": "Copy of V1",
  "mimeType": "application/vnd.google-apps.folder"
},
...

有任何想法吗?

编辑:

谢谢!问题似乎是“语料库”和“空间”。我曾经在Google AppsScript中关注以下内容:

var options = {
  'contentType': 'application/json',
  'method'     : 'get',
  'headers'    : { Authorization: 'Bearer ' + service.getAccessToken() },
  'muteHttpExceptions': true,
  'pageSize'   : 100
};
url += '?q=' + encodeURIComponent(query);
if ( pageToken.length > 0 ) url += '&pageToken=' + pageToken;
var response = UrlFetchApp.fetch(url, options);
Tanaike

这个答案怎么样?

修改要点:

  • 在Drive API v3中的“文件:列表”方法中,的值corpora, q, space, pageSize, pageToken用作查询参数。我认为您的问题的原因是由于此。
  • 在GET方法中,contentType不是必需的。

修改后的脚本:

修改脚本后,它如下所示。

var query = "('GoogleDriveFolderKey01' in parents or 'GoogleDriveFolderKey02' in parents) and trashed = false and mimeType = 'application/vnd.google-apps.folder'"

var url = 'https://www.googleapis.com/drive/v3/files'  // Modified
var options = {  // Modified
  'method'     : 'get',
  'headers'    : { Authorization: 'Bearer ' + service.getAccessToken() },
  'muteHttpExceptions': true,
};
url += `?corpora=domain&q=${encodeURIComponent(query)}&spaces=drive&pageSize=100&pageToken=${pageToken}`;  // Added

var response = UrlFetchApp.fetch(url, options);
var resultParsed = JSON.parse(response.getContentText());
files = resultParsed.files
pageToken = resultParsed.pageToken

注意:

  • 此修改的脚本假定service.getAccessToken()可用于使用Drive API v3中的“文件:列表”方法。
  • 如果发生错误,请corpora=domain从如下所示的URL中删除并再次进行测试。

    url += `?q=${encodeURIComponent(query)}&spaces=drive&pageSize=100&pageToken=${pageToken}`;
    

参考:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何过滤掉 Google Drive Activity API 中的 MIMETYPE

如何从 google drive api v3 获取文件列表?

Google Drive Java API V2与V3

Google Drive Api v3获得下载进度

Google Drive Api v3和proguard

Google Drive PHP v3 API文件元数据

选择特定字段Google Drive API v3

Google Drive API v3:无效的字段选择

用Python覆盖Google Drive API v3 Argparse

使用Google Drive API v3移动文件

Google Save To Drive API v3停止工作

搜索文件 Google Drive API v3

如何使用Google Drive Java API v3在Google Drive上复制文件?

如何使用带有Google Drive API v3 Java的服务帐户访问Team Drive

如何使用带有Google Drive .NET API v3的服务帐户访问Team Drive

如何使用 Python 和 Drive API v3 从 Google Drive 下载文件

如何从Google Drive REST API v3获取共享链接?

如何从 Google Drive 上传和下载文件(使用 Rest Api v3)

如何使用NodeJS和Google Drive API v3将文件移至垃圾箱

如何在Google Drive API v3中获取文件的“ lastModified”?

如何在Google Drive API v3中将XLSX转换为表格

如何让 Google Drive API v3 示例在 C# 中工作?

如何在Google Drive API v3中更新权限?

如何在 Python 中使用 Google Drive API v3 更改所有者?

如何在Google Drive API v3,Python客户端中删除文件

如何使用Google Drive API v3上传到Python中的共享驱动器?

如何在Google Drive Api v3中进行部分下载?

如何使用Google Drive Api v3和php显示文本文件的内容?

如何使用Python和Drive API v3下载Google云端硬盘文件