|
function listFolders(folder) { |
|
var sheet = SpreadsheetApp.getActiveSheet(); |
|
sheet.appendRow(["Name", "Sharing Access", "Sharing Permission", "Get Editors", "Get Viewers", "Date", "Size", "URL", "Download", "Description", "Type"]); //writes the headers |
|
|
|
//var folder = DriveApp.getFolderById("INSERT_YOUR_FILE_ID");//that long chunk of random numbers/letters in the URL when you navigate to the folder |
|
//getLooseFiles(folder, sheet); |
|
//getSubFolders(folder, sheet); |
|
|
|
//instead of getting folder by ID rather get all folders and cycle through each. Note this will miss loose files in parent directory. |
|
var folder = DriveApp.getFolders() |
|
while (folder.hasNext()) { |
|
var name = folder.next(); |
|
getLooseFiles(name, sheet); |
|
getSubFolders(name, sheet); |
|
}; |
|
|
|
} |
|
|
|
function getLooseFiles(folder, sheet) { |
|
var files = folder.getFiles();//initial loop on loose files w/in the folder |
|
var cnt = 0; |
|
var file; |
|
|
|
while (files.hasNext()) { |
|
var file = files.next(); |
|
var listEditors = file.getEditors(); //gets the editor email(s), doesn't show your own as it's assumed |
|
var editors = []; |
|
for (var cnt = 0; cnt < listEditors.length; cnt++) { |
|
editors.push(listEditors[cnt].getEmail()); |
|
Logger.log(editors); |
|
}; |
|
var listViewers = file.getViewers(); //gets the viewer email(s) |
|
var viewers = []; |
|
for (var cnt = 0; cnt < listViewers.length; cnt++) { |
|
viewers.push(listViewers[cnt].getEmail()); |
|
Logger.log(viewers); |
|
} |
|
cnt++; //data chunk pushes all the file info to the ss |
|
|
|
data = [ |
|
file.getName(), |
|
file.getSharingAccess(), |
|
file.getSharingPermission(), |
|
editors.toString(), |
|
viewers.toString(), |
|
file.getDateCreated(), |
|
file.getSize(), |
|
file.getUrl(), |
|
"https://docs.google.com/uc?export=download&confirm=no_antivirus&id=" + file.getId(), |
|
file.getDescription(), |
|
file.getMimeType(), |
|
]; |
|
|
|
if(data[1] != "PRIVATE") { |
|
sheet.appendRow(data); |
|
} |
|
|
|
}; |
|
|
|
} |
|
|
|
function getSubFolders(folder, sheet) { |
|
var subfolders = folder.getFolders(); //same thing as above but for all the subfolders in the folder |
|
|
|
while (subfolders.hasNext()) { |
|
Logger.log(folder); |
|
var name = subfolders.next(); |
|
getLooseFiles(name, sheet); |
|
getSubFolders(name, sheet); |
|
}; |
|
} |
To use: