Last active
November 19, 2022 06:08
-
-
Save billzhuang/43faa0a8daea8f0dab74 to your computer and use it in GitHub Desktop.
Google Apps script to bulk remove default sharing in Google Drive
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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