Google Apps脚本中的“共享驱动器”支持

时间:2020-06-16 07:45:56

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

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

例如,

  • 对于共享驱动器的根文件夹,Folder.getName()仅返回“驱动器”而不是驱动器的名称,
  • 即使mygroup@domain.com是共享驱动器的“管理器”,folder.getAccess('mygroup@domain.com')也没有,而folder.getViewers()为空,
  • DriveApp.getFolders()迭代器中(始终)不包括“共享驱动器”中的某些文件夹。

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

1 个答案:

答案 0 :(得分:2)

使用Advanced Drive Service代替DriveApp

  • 实际上,DriveApp不支持共享驱动器,它的作用域有限
  • 但是如果您enable Advanced 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});
}