Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 获取TeamDrive文件夹的权限_Google Apps Script_Google Api_Google Drive Api_Google Drive Shared Drive - Fatal编程技术网

Google apps script 获取TeamDrive文件夹的权限

Google apps script 获取TeamDrive文件夹的权限,google-apps-script,google-api,google-drive-api,google-drive-shared-drive,Google Apps Script,Google Api,Google Drive Api,Google Drive Shared Drive,我正在尝试获取对TeamDrive根文件夹而不是TeamDrive文件具有访问权(编辑、评论、查看…)的用户列表 第一次尝试: var folders = Drive.Teamdrives.list({ pageSize:100, pageToken:folderPT }); for (var i = 0; i < folders.items.length; i++) { var folder = folders.items[i]; var te

我正在尝试获取对TeamDrive根文件夹而不是TeamDrive文件具有访问权(编辑、评论、查看…)的用户列表

第一次尝试:

var folders = Drive.Teamdrives.list({
  pageSize:100,
  pageToken:folderPT
});

for (var i = 0; i < folders.items.length; i++)
    {
      var folder = folders.items[i];

      var teamDrive = Drive.Teamdrives.get(folder.id);
      var test = DriveApp.getFolderById(folder.id);
      Logger.log(test.getEditors());
    }
编辑: 事实上,上面的代码正在工作,我的测试文件夹是空的。
但下面的答案更好

您可以使用文件来确定对文件本身设置的权限或从Team Drive继承的权限

您可以通过
驱动器
中的
权限
命名空间执行此操作

function getFilePermissions(fileId) {

  var permissions = Drive.Permissions.list(fileId,  {supportsTeamDrives:true,
                                                     corpora: 'teamDrive',
                                                     includeTeamDriveItems: true})
  .items
  .reduce(function(all, i){

    var role = i.teamDrivePermissionDetails.map(function(permission){

      // commenters are flagged as having an additional role as readers
      var activeRole = (i.additionalRoles) ?  i.additionalRoles[0] : permission.role;

      return {emailAddress: i.emailAddress,
              teamDrivePermissionType: permission.teamDrivePermissionType,
              role: activeRole};
    });

    return all.concat(role);
  }, []);

  return permissions;
}
此函数减少了
权限.list
调用返回的信息量,以返回一个对象数组,从中可以确定全部信息。单个用户可以是团队驱动器的读取器,但可以是文件本身的编写器(编辑器),此函数将返回这两个权限

e、 g

[
{
“电子邮件地址”:”geoff@example.com",

“teamDrivePermissionType”:“member”,你的代码有什么问题?你有要检查的用户列表吗?这可以通过测试每个用户对Teamdrive的权限来实现。@DaImTo,我将更新我的帖子。响应为“[]”@Jonathon我有一个可以访问TeamDrive中文件的用户列表。我的目标是比较这些列表,找到那些可以访问文件但不属于TheamDrive forlder的用户。我希望这是可以理解的。因此,共享文件的用户不是驱动器的默认成员吗?我认为你的答案完全符合我的要求需要谢谢。我在哪里可以按成员或文件进行筛选?参数
teamDrivePermissionType
function getFilePermissions(fileId) {

  var permissions = Drive.Permissions.list(fileId,  {supportsTeamDrives:true,
                                                     corpora: 'teamDrive',
                                                     includeTeamDriveItems: true})
  .items
  .reduce(function(all, i){

    var role = i.teamDrivePermissionDetails.map(function(permission){

      // commenters are flagged as having an additional role as readers
      var activeRole = (i.additionalRoles) ?  i.additionalRoles[0] : permission.role;

      return {emailAddress: i.emailAddress,
              teamDrivePermissionType: permission.teamDrivePermissionType,
              role: activeRole};
    });

    return all.concat(role);
  }, []);

  return permissions;
}
 [
    {
        "emailAddress": "geoff@example.com",
        "teamDrivePermissionType": "member",     <-- a Team Drive permission
        "role": "organizer"                      <-- an Team Drive domain member
    },
    {
        "emailAddress": "jonathon@example.com", 
        "teamDrivePermissionType": "member",
        "role": "writer"                         <-- a non-Domain member
    },
    {
        "emailAddress": "jonathon@example.com",
        "teamDrivePermissionType": "file",
        "role": "writer"                         <-- editor set on the file share
    },
    {
        "emailAddress": "svea@example.com",
        "teamDrivePermissionType": "file",
        "role": "reader"                         <-- viewing rights set at file level
    },
    {
        "emailAddress": "info@example.com",
        "teamDrivePermissionType": "member",
        "role": "organizer"
    },
    {
        "emailAddress": "rebekkah@example.com",
        "teamDrivePermissionType": "file",
        "role": "commenter"                      <-- this is a reader with comment rights
    }
]