You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Google Drive API V2无法访问共享云端硬盘文件和文件夹问题

问题原因与解决方案

核心问题

你用Drive API V2查询共享云端硬盘内的文件夹时,未指定共享云端硬盘专属的查询参数,默认情况下Drive API V2只会检索你的个人云端硬盘内容,因此返回0个结果。

关键参数补充

要获取共享云端硬盘的文件/文件夹,必须在Drive.Files.list的参数中添加以下几项:

  • corpora: 'drive':指定搜索范围为特定共享云端硬盘(而非个人盘)
  • driveId: '你的共享云端硬盘ID':目标共享云端硬盘的ID(可通过浏览器地址栏获取,格式类似0ABC...XYZ)
  • includeItemsFromAllDrives: true:允许返回共享云端硬盘中的项目
  • supportsAllDrives: true:声明脚本支持访问共享云端硬盘

修改后的代码

function countFolderFolders() {
  var folderId = 'ABCD123';  // 替换为目标文件夹ID
  var driveId = 'SHARED_DRIVE_ID'; // 替换为你的共享云端硬盘ID
  var driveApi;
  try {
    driveApi = Drive.Files.list({
      q: "'" + folderId + "' in parents and trashed = false and mimeType = 'application/vnd.google-apps.folder'",
      maxResults: 1000,
      corpora: 'drive',
      driveId: driveId,
      includeItemsFromAllDrives: true,
      supportsAllDrives: true
    });
  } catch (e) {
    Logger.log('Drive API Error: ' + e.toString());
    return;
  }

  if (driveApi && driveApi.items) {
    var folderCount = driveApi.items.length; // 因为查询已经过滤了文件夹类型,直接取长度即可
    Logger.log('目标文件夹(ID:' + folderId + ')内的子文件夹数量为:' + folderCount);
  } else {
    Logger.log('未找到子文件夹或发生错误。');
  }
  testAccount();
}

function testAccount() {
  var email = Session.getActiveUser().getEmail();
  Logger.log('脚本运行账户:' + email);
}

额外说明

  1. 关于DriveApp超时问题:如果目标文件夹内容较多,DriveApp的getFolders()方法可能因加载延迟超时,改用带参数的Drive API查询会更高效。
  2. 权限验证:确保你启用的Drive API是V2版本(在脚本编辑器的「资源」→「高级Google服务」中确认),且运行账户确实拥有共享云端硬盘的组织者权限。

内容的提问来源于stack exchange,提问作者Glib Gibon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 08:37:41