Skip to content

Instantly share code, notes, and snippets.

@thinkle
Created June 17, 2022 11:08
Show Gist options
  • Save thinkle/ebba74cd8414ad41a80b6f2cde81bb8e to your computer and use it in GitHub Desktop.
Save thinkle/ebba74cd8414ad41a80b6f2cde81bb8e to your computer and use it in GitHub Desktop.
Deleting and readding permissions for a group in a shared google drive in order to spark proper sharing w/ new members of the group
const GROUPADDRESS = '[email protected]'
function sharedDriveFix () {
let nextPageToken;
let count = 0;
do {
let result = Drive.Drives.list({useDomainAdminAccess:true, pageToken:nextPageToken})
result.items.forEach((i)=>{
console.log(i.name,i.id);
let nextPermPageToken
do {
let permResult = Drive.Permissions.list(i.id,{useDomainAdminAccess:true,pageToken:nextPermPageToken,supportsAllDrives:true});
for (let perm of permResult.items) {
if (perm.emailAddress==GROUPADDRESS) {
// Delete permission so we can re-add it
let deleteResult = Drive.Permissions.remove(i.id,perm.id, {supportsAllDrives : true, useDomainAdminAccess : true});
console.log('Deleted: ',perm);
// Now re-add it...
let insertResult = Drive.Permissions.insert({
role : perm.role,
type : perm.type,
additionalRoles : perm.additionalRoles,
id : perm.id,
value : perm.emailAddress,
},i.id,
{
sendNotificationEmails : false,
supportsAllDrives : true,
useDomainAdminAccess : true,
}
)
console.log('Re-added permission',insertResult);
count += 1;
}
}
nextPermPageToken = permResult.nextPageToken;
} while (nextPermPageToken)
})
nextPageToken = result.nextPageToken
} while (nextPageToken)
console.log('Re-shared permission for ',count,'drives')
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment