如何检查文件是属于我的云端硬盘还是属于团队云端硬盘

How to check whether the file belongs to My Drive or Team Drive

有没有更省时的方法来检查文件的根目录是"My Drive"还是"Team Drive"?

我试过使用 file.getParents(); 然后遍历每个父级,最后到 Root,但这太耗时了。

当文件在团队云端硬盘中时,所有者是团队云端硬盘,而不是任何特定用户。

您可以检查该文件的所有权,如果它设置为空,则该文件可能位于团队云端硬盘中。

var file = DriveApp.getFileById("fileID");
if (file.getOwner() === null) {
  // do something here
}

如果您使用的是Drive高级服务,您可以直接查询Team Drive信息:

示例:

function getTeamDriveId(fileId) {
  const options = {
    fields: "id,title,teamDriveId",
  };
  const file = Drive.Files.get(fileId, options);
  return file.teamDriveId;
}

对于不在团队云端硬盘中的文件,上述 ID 将为 false-y。

有几个元数据字段可供查询,团队云端硬盘项目仅存在或不存在。重要的是要注意您使用的 API 版本,因为 2 和 3 之间的资源名称有变化。在测试是否存在 Boolean 字段时使用严格比较也很重要,或者其他可能为 false-y 的字段。

缺席:

  • 所有者姓名
  • 所有者
  • 作家可以分享
  • 共享
  • 权限
  • folderColorRgb
  • ownedByMe

现在:

  • teamDriveId
  • hasAugmentedPermissions
  • capabilities/canMoveTeamDriveItem
  • capabilities/canReadTeamDrive
  • 垃圾用户
  • 垃圾处理日期

参考文献: