我正在编写一个简单的应用程序脚本,以对位于公司teamdrive上的文件设置权限。要启用的文件和用户将写入Google表格文档中。该脚本读取文件名和用户(由其电子邮件标识)的每一行,并设置“查看者”权限。基本脚本可以正常工作,但具有令人讨厌的功能,可以向设置了权限的每个用户发送电子邮件。 这是工作代码:
function simpleSetFilePermission_v1(filename, user_email){
var files = DriveApp.getFilesByName(filename);
while (files.hasNext()) {
var file = files.next();
if (file) {
file.addViewer(user);
return file;
}
}
}
寻找避免邮件通知的解决方案我遇到了各种各样的文章,这些文章建议启用高级功能并使用高级Google服务(stack overflow post)访问TeamDrive上的文件。 问题是带有应用程序脚本gsuite的APIS不起作用。
function simpleSetFilePermission_v2(filename, user_email){
var files = DriveApp.getFilesByName(filename);
while (files.hasNext()) {
var file = files.next();
if (file) {
var _f_id = file.getId();
Drive.Permissions.insert(
{
'role': 'reader',
'type':'user',
'value': user_email
},
_f_id,
{
'sendNotificationEmails': 'false'
});
return file;
}
}
}
在此函数中,使用 Drive.Permissions 函数时出现“找不到文件”错误。我还尝试了其他具有相同错误的 Drive。* 函数。使用本机 DriveApp。* 函数可以正常运行,并且文件ID相同,而 Drive。* 函数会出错。
管理员是否必须设置一些权限(当然,我已经启用了高级服务)? 将API与Google App脚本一起使用是否有一些限制?预先感谢
Guido
答案 0 :(得分:1)
首先,您收到“找不到文件”错误,因为您列出的文件中没有“ includeItemsFromAllDrives”布尔值。直到2020年,它都将成为list
命令的默认属性,才有必要。否则,它将不会尝试在Team Drives中查找文件。
第二,您需要在insert
权限调用中添加“ supportsAllDrives”布尔值。这也是2020年的默认属性。
第三点,也是更重要的一点是,您不能在Team Drive中降低某个文件的用户权限。例如,您可以向查看者授予“编辑”权限,但不能从“贡献者”中删除“编辑”权限。您可以找到有关权限here的更多信息。