首页 > 解决方案 > 以编程方式与特定用户(不是 Teamdrive 成员)共享 Teamdrive 中的文件

问题描述

我想使用 Google Apps 脚本与特定用户共享特定文件。该文件位于 Teamdrive 中,用户不是 Teamdrive 的成员,也不应该是 Teamdrive 的成员。

据我所知,使用 DriveApp 在普通驱动器中执行此操作的方法在 Teamdrives 中不起作用,因此我正在尝试使用 Drive REST API。据我了解,执行此操作的语法是:

  Drive.Permissions.insert(
    {role: "reader",
     type: "user",
     value: USER_EMAIL
    },
    FILE_ID,
    {sendNotificationEmails:false,
     supportsTeamDrives:true,
     useDomainAdminAccess:true
    }
  )

这会产生一条错误消息,内容如下:

对 drive.permissions.insert 的 API 调用失败并出现错误:未找到团队驱动器:FILE_ID

当我用 Teamdrive 的 ID 替换 FILE_ID 时,它会将用户设置为整个 Teamdrive 的成员。

如何指定要为其设置权限的文件,或者更一般地说,如何以编程方式执行此操作?

标签: google-apps-scriptgoogle-drive-apigoogle-drive-shared-drive

解决方案


我遇到了完全相同的问题,但是当我添加supportsTeamDrives:true参数时它起作用了。它应该在2020 年 6 月 1 日被弃用。
所以命令现在看起来像这样:

Drive.Permissions.insert(
      {
        value,
        type,
        role,
        withLink: false
      },
      fileId,
      {
        sendNotificationEmails: false,
        supportsAllDrives: true
      });

推荐阅读