Файл можно использовать для определения разрешений, установленных для самого файла или унаследованных от Team Drive.
Вы можете сделать это через пространство имен Permissions
в 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;
}
Эта функция уменьшает количество информации, возвращаемой вызовом Permissions.list
для возврата массива объектов, из которого вы можете получить целую кучу информации. Один пользователь может быть читателем Team Drive, но автором (редактором) самого файла, эта функция возвращает оба разрешения.
, например
[
{
"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
}
]
Отфильтруйте его по member
или file
(не член) или по роли: читатель, писатель и т. Д.
Для получения дополнительной информации о схеме объекта Permissions проверьте здесь: Ресурс Permissions