我经常需要更改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获取文件,是否可以为此特定用户设置编辑或查看权限?
学家针
答案 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 可能会占用大量时间。