【问题标题】:"Shared Drive" support in Google Apps ScriptGoogle Apps 脚本中的“共享驱动器”支持
【发布时间】:2020-10-05 18:21:35
【问题描述】:

我正在 Google Apps 脚本中编写一个 JavaScript 工具来检查文档的某些属性,例如“所有链接都有效”、“权限设置是否正确”等等。我正在使用https://developers.google.com/apps-script/reference/drive/drive-app 中记录的 API 按 ID 查找文件、检查其权限、在 Google Drive 中定位它们等,但我发现“共享驱动器”不能很好地与该 API 配合使用。

例如,

  • 对于共享驱动器的根文件夹,Folder.getName() 只返回“驱动器”而不是驱动器的名称,
  • 即使mygroup@domain.com 是共享驱动器的“管理员”,folder.getAccess('mygroup@domain.com') 是 NONE 并且 folder.getViewers() 是空的,
  • 共享驱动器中的某些文件夹不(总是)包含在DriveApp.getFolders() 迭代器中。

尤其是第二点现在对我来说是一个障碍,但是我在这里缺少什么?我应该使用其他一些 API,还是我应该报告它只是一个错误?是否有一些关于 Drive API 的哪些功能我可以和不能与共享驱动器一起使用的文档?

【问题讨论】:

  • 这能回答你的问题吗? Accessing Files and Folders in Team Drive
  • 它是相关的,但我认为我缺少的要点是 (1) 是的,我无法使用 DriveApp API 与 Team Drives 一起工作,以及 (2)我可以在 Google Apps 脚本脚本中使用 Drive API v2,在您的链接中提出问题的用户似乎已经知道这两个脚本。所以我认为在这方面这个问题并不完全是重复的,下面 ziganotschka 提供的答案为我提供了重要信息。

标签: javascript google-apps-script google-drive-api google-drive-shared-drive


【解决方案1】:

使用Advanced Drive Service 代替DriveApp

  • 确实,DriveApp 不支持共享驱动器,其范围有限
  • 但是如果你enableAdvanced Drive Service,你将能够在Apps Script中使用Drive API v2支持共享驱动器的所有方法

示例:

function myFunction() {
  var sharedDriveName = Drive.Drives.get("XXXXXXXXXXXXXXXXXXX").name;
  //it is important to specify that the folder is located on a shared drive with {"supportsAllDrives": true}
  var folderOnDriveName = Drive.Files.get("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",{"supportsAllDrives": true}).title;
  var folderPermissions = Drive.Permissions.list("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",{"supportsAllDrives": true});
}

【讨论】:

  • 我知道了,我之前遇到过Drive.Drives,但我不明白一旦启用了高级驱动服务,它也可以从 Google Apps 脚本中使用,我以为它只是一个 Web API。所以现在给定一个GoogleAppsScript.Drive.File,我可以用Drive.Permissions.list(f.getId(), {supportsAllDrives: true}).find((p) => p.emailAddress == "mygroup@domain.com");之类的东西检查权限。谢谢!
  • @tgpfeiffer - 请注意以供将来参考,不仅 Drive,而且所有高级服务都是 wrappers 围绕相应的 REST API,因此您可以互换使用它们
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-02
  • 1970-01-01
相关资源
最近更新 更多