如何检查文件是属于My Drive还是Team Drive

时间:2018-06-06 06:06:27

标签: google-apps-script google-drive-api google-app-maker

是否有更省时的方法来检查文件的根目录是“我的驱动器”还是“团队驱动器”?

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

2 个答案:

答案 0 :(得分:2)

当文件位于Team Drive中时,所有者是团队驱动器,而不是任何特定用户。

您可以检查文件的所有权,如果设置为null,则该文件可能位于Team Drive中。

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

答案 1 :(得分:2)

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

示例:

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

对于不在Team Drive中的文件,上述ID将为false-y。

有几个要查询的元数据字段仅在Team Drive项目中存在或不存在。请务必注意您使用的API版本,因为资源名称在2到3之间会发生更改。在测试是否存在Boolean字段或其他可能的字段时,使用严格比较也很重要。是假的。

缺席:

  • ownerNames
  • 所有者
  • writersCanShare
  • 共享
  • 权限
  • folderColorRgb
  • ownedByMe

现:

  • teamDriveId
  • hasAugmentedPermissions
  • 能力/ canMoveTeamDriveItem
  • 能力/ canReadTeamDrive
  • trashingUser
  • trashedDate

参考文献: