Google apps script 获取TeamDrive文件夹的权限
我正在尝试获取对TeamDrive根文件夹而不是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
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
}
]