javascript - 通过脚本设置对 Team drive 文件的权限

标签 javascript google-apps-script google-drive-api google-workspace drive

我正在编写一个简单的应用脚本来设置对位于公司团队驱动器上的文件的权限。要启用的文件和用户被写入 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.* 函数有同样的错误。使用 native DriveApp.* 函数一切正常,文件 ID 与使用 Drive.* 函数时遇到的错误相同。

是否有一些必须由管理员设置的权限(当然我已经启用了高级服务)? 将 API 与谷歌应用程序脚本一起使用是否有一些限制?提前致谢

吉多

最佳答案

首先,您收到“找不到文件”错误,因为您列出的文件没有“includeItemsFromAllDrives” bool 值。它在 2020 年之前都是必需的,届时它将成为 list 命令的默认属性。否则它不会尝试在团队云端硬盘中查找文件。

其次,您需要在insert 权限调用中添加“supportsAllDrives” bool 值。这也将是 2020 年的默认属性。

第三,也是更重要的一点,您不能降低用户在团队云端硬盘中对特定文件的权限。例如,您可以向查看者授予编辑权限,但不能删除贡献者的编辑权限。您可以找到有关权限的更多信息 here .

关于javascript - 通过脚本设置对 Team drive 文件的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56657436/

相关文章:

java - 用 Java 直接从 Google Drive 读取

google-drive-api - 不同大小的 Google Drive 缩略图

javascript - 使用 if 语句附加类

javascript - 异步更新数组项 - watch 不触发

google-apps-script - 使用另一个脚本更新谷歌工作表脚本

google-apps-script - Data Studio 连接器多次调用 API,而它应该只进行 1 次调用

google-apps-script - Google 脚本正在重新处理电子邮件

c# - Asp.net mvc fileupload 通过 ajax

javascript - 滚动 y 但固定到 x - ios 中的错误

google-api - 如何对 Google Drive API 中的文件触发病毒检查?