Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@billzhuang
Last active November 19, 2022 06:08
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save billzhuang/43faa0a8daea8f0dab74 to your computer and use it in GitHub Desktop.
Save billzhuang/43faa0a8daea8f0dab74 to your computer and use it in GitHub Desktop.
Google Apps script to bulk remove default sharing in Google Drive
/**
* Google Apps has some admin restriction, such as sharing to whole group by default
* this script can remove all sharing and reset to private only
* For more information on interacting with folders, see
* https://developers.google.com/apps-script/reference/drive/folder
* Github gist is here: https://gist.github.com/billzhuang/43faa0a8daea8f0dab74
*/
// step 1, prepare data in excel
function prepareData(){
// clear folder first
removeFolderSharing();
var files = DriveApp.getFiles();
var sheet = getCurrentSheet();
var index = 0;
while (files.hasNext()) {
var file = files.next();
if(file.getSharingAccess() != DriveApp.Access.PRIVATE){
if(index == 0){
index = insertToSpreadsheet(sheet, file.getId());
}
else{
index = insertToSpreadsheet(sheet, file.getId(), index);
}
}
}
}
// step 2, remove all sharing in my drive
function removeAll(){
// cache sheet object
var sheet = getCurrentSheet();
while(true){
var value = readLastData(sheet);
if(value == "NAN"){
break;
}
removeSharing(value);
removeLastData(sheet);
}
}
// get predefined spreadsheet active sheet
function getCurrentSheet(){
var file = SpreadsheetApp.openById("1kqg67vNbHyC8wIfmS1G4VFQbuOuVPbOSLSKKmufAHdE");
return file.getActiveSheet();
}
// add data to defined sheet, use spreadsheet as data source
function insertToSpreadsheet(sheet, value, index){
if(typeof(index) != "undefined"){
sheet.getRange(index + 1, 1).setValue(value);
return index + 1;
}
index = sheet.getLastRow();
sheet.getRange(index + 1, 1).setValue(value);
return index + 1;
}
function readLastData(sheet){
var index = sheet.getLastRow();
if (index == 0){
return "NAN";
}
var range = sheet.getRange(index, 1);
return range.getValue();
}
function removeLastData(sheet){
var index = sheet.getLastRow();
var range = sheet.getRange(index, 1);
range.clear();
}
// remove Sharing by single file
function removeSharing(fileId){
var file = DriveApp.getFileById(fileId);
file.setSharing(DriveApp.Access.PRIVATE, DriveApp.Permission.NONE);
//Logger.log(file.getId() + "##" + file.getName() + "##" + file.getSharingAccess() + "##" + file.getSharingPermission() + "\n");
}
// list all folders include subfolders
function removeFolderSharing(){
var folders = DriveApp.getFolders();
while (folders.hasNext()) {
var folder = folders.next();
folder.setSharing(DriveApp.Access.PRIVATE, DriveApp.Permission.NONE)
//Logger.log(folder.getName() + "##" + folder.getId() + "##\n");
}
}
function testSheet(){
var file = SpreadsheetApp.openById("1kqg67vNbHyC8wIfmS1G4VFQbuOuVPbOSLSKKmufAHdE");
var sheet = file.getActiveSheet();
var index = sheet.getLastRow();
Logger.log("Lost Row:" + index);
var range = sheet.getRange(index,1);
Logger.log(range.getValue());
range.clear()
var index2 = sheet.getLastRow();
Logger.log("Lost Row:" + index2);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment