在 Google AppScripts 中,我们如何为共享云端硬盘中的文件夹添加内容管理器权限?

问题描述 投票:0回答:3

在 AppScripts API 参考中,添加文件夹权限有两个设置:addEditor(emailAddress) 和 addViewer(emailaddress)。无论如何,我们可以使用 AppScripts 在文件夹上添加“内容管理器”权限吗?

google-apps-script google-drive-api
3个回答
1
投票

Google Apps 脚本有两种使用 Google 云端硬盘的方式:

  1. 内置
    DriveApp
    ,具有友好的 API,用于执行大多数驱动器功能。
  2. 高级 Google Drive API,在“高级 Google 服务”中启用。默认情况下,此类名为
    Drive
    。注意:截至今天,Google 只允许您在 Google Apps 脚本中使用此 API 的 v2,而不是最新版本的 v3。请务必参阅 Drive API 的 v2 文档 - 与下面使用的权限调用存在差异。

如您所知,DriveApp 不提供共享云端硬盘的全套权限。您可以添加一些权限,例如编辑器:

DriveApp.getFolderById(sharedFolderId).addEditor(email);

要访问所有共享云端硬盘权限,您需要激活完整(“高级”)Google Drive API 并使用

Drive.Permissions.insert
。如前所述,此代码适用于 API v2:

  Drive.Permissions.insert({ // This method name is "insert" in v3
    'role': 'fileOrganizer', // Displayed in the UI as "Content Manager"
    'type': 'user',
    'value': email, // This field name is "emailAddress" in v3
  }, sharedFolderId, {
    'supportsAllDrives': true, // Must be true for shared drives
  });

将权限映射到 UI 中的显示方式:

  • 主办方:经理
  • fileOrganizer:内容管理器
  • 作者:贡献者
  • 读者:浏览者
  • 读者与
    additionalRoles
    评论者:评论者

0
投票

Google Drive API 有一个通用方法可以向组授予权限,请参阅

setSharing(accessType, permissionType)

// Creates a folder that anyone on the Internet can read from and write to. (Domain
// administrators can prohibit this setting for users of a Google Workspace domain.)
var folder = DriveApp.createFolder('Shared Folder');
folder.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.EDIT);

权限包括编辑、查看、整理等...

参考资料:

类文件夹 |设置共享

权限

枚举访问


0
投票

@jtatum 你的帖子特别有帮助!我使用 Drive API V3 完成了我的工作。对于那些不明白这意味着什么的人,请单击链接并配置您的设置,然后再查看下面的示例:

Drive.Permission API 函数的快速细分,有关 API 构造的完整列表,请访问 Google API 主页。对于此示例,我们将有:

  • 两个变量

  • 两种配置

     function setContentManagerPermission(){       
       var resourceid = "XYCDEFEGH12323" //This can be a file id or folder id
       var emailaddress = "[email protected]"
    
       var resource = {
         'role': 'fileOrganizer', // Grants Content Manager permissions.
         'type': 'user',
         'emailAddress': emailaddress
       }; //THIS IS A JSON STATEMENT
    
       //NOTE: resource must be passed in first
       Drive.Permissions.create(resource,resourceid,{
         'sendNotificationEmails': false,
         'supportsAllDrives': true
       });
    
     }
    
  • 请注意,资源变量必须为 json 格式。我发现使用 JSON 作为变量更容易格式化。您不必使用此变量。 varialbe 支持包含 json 的本机调用。

  • 此外,Drive.Permissions.Insert 在 V3 中已替换为 驱动器.权限.创建。他们也在更新和删除

  • 在驱动器权限下,您必须将supportsAllDrives 设置为true 为了使用共享驱动器。没有它,这将无法工作。

我希望这有帮助,它已经过测试并且效果很好。

© www.soinside.com 2019 - 2024. All rights reserved.