使用Google App Script设置文件权限

时间:2016-04-08 21:16:54

标签: google-apps-script

我经常需要更改Google云端硬盘上大量文件的文件共享权限。我宁愿不必逐个文件地手动执行此操作。我没有解决文件ID的问题,但似乎找不到与为特定用户设置权限相关的任何信息。

假设我有ID - 1132asdfasdf5sdf564sdf的文件 假设我有一个名为John Smith的用户,其电子邮件地址为jsmith@email.com且该用户是Google用户。

以下是一个示例脚本:

function myFunction() {      
  // this grabs the ID of the source file
  var sourcefile=DriveApp.getFileById("1132asdfasdf5sdf564sdf");      
}

问题。一旦我按ID获取文件,是否可以为此特定用户设置编辑或查看权限?

学家针

2 个答案:

答案 0 :(得分:1)

您可以尝试使用Drive Service。此服务允许脚本在Google云端硬盘中创建,查找和修改文件和文件夹。

// Log the name of every file in the user's Drive.
var files = DriveApp.getFiles();
while (files.hasNext()) {
  var file = files.next();
  Logger.log(file.getName());
}

使用enum permission代表授予可以访问文件或文件夹的用户的权限,以及明确授予访问权限的任何个人用户。可以从DriveApp.Permission访问这些属性。

  • 查看 - 可以访问该文件或文件夹的用户只能查看或复制它。如果文件类型不支持,则将此值传递给File.setSharing(accessType, permissionType)会引发异常。

  • 编辑 - 可以访问该文件或文件夹的用户可以对其进行编辑。除非File.setShareableByEditors(shareable)设置为false,否则用户还可以更改共享设置。如果文件类型不支持,则将此值传递给File.setSharing(accessType, permissionType)会引发异常。

另请尝试检查此SO question以获取更多信息。

答案 1 :(得分:-1)

我意识到这是一个较旧的问题,但我最近遇到了权限问题,所以让我补充一下:

我不太确定确切的上下文。您是否在权限方案中用新用户替换旧用户?如果是,则需要调用 File 或 Document 类方法 removeEditor(s) 或 removeViewer(s),然后跟进 addEditor(s) 或 addViewer(s)。

使用内置方法的问题(据我所知)是,如果您进行批量权限插入,则很难阻止向用户发送大量电子邮件通知。您可以利用 Drive API 的灵活性专门停止电子邮件通知,但调用 Drive API 可能会占用大量时间。

相关问题