I have a large number of Folders and Sub-Folders, which I want to extract the Hyperlink and the Full Folder path.
The below script works. I dont remember where I found it however it has been modified to give me what I need. However I don't know how to Bypass Google's Execution Timeout. I have a 30min timeout which helps however it's not enough.
Could anyone give me a suggestion to either seriously speed up the code and/or Bypass Google's Execution Timeout.
var SS = SpreadsheetApp.getActiveSpreadsheet();
function listFilesAndFolders(){
var folderId = 'Insert Root Folder to Search'
getFolderTree(folderId, true);
};
// Get Folder Tree
function getFolderTree(folderId, listAll) {
try {
// Get folder by id
var parentFolder = DriveApp.getFolderById(folderId);
// Initialise the sheet
var data, sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Folders");
sheet.clear();
sheet.appendRow([ "URL", "Full Path"]);
// Get files and folders
getChildFolders(parentFolder.getName(), parentFolder, data, sheet, listAll);
} catch (e) {
Logger.log(e.toString());
}
};
// Get the list of files and folders and their metadata in recursive mode
function getChildFolders(parentName, parent, data, sheet, listAll) {
var childFolders = parent.getFolders();
// List folders inside the folder
while (childFolders.hasNext()) {
var childFolder = childFolders.next();
data = [
childFolder.getUrl(),
parentName + "/" + childFolder.getName(),
];
// Write
sheet.appendRow(data);
getChildFolders(parentName + "/" + childFolder.getName(), childFolder, data, sheet, listAll);
}
};
I've searched online to find something that could maybe be used to incorporate the above code however so far no luck.
One option is to try an incorporate this: Google app script timeout ~ 5 minutes?
Else this: https://script.gs/bypass-script-execution-timeout-programmatically/
However I can't seem to pull it together. Any and all help would be greatly appreciated. Tx