'How to search for a file in subfolders inside subfolders using apps script?
I'm trying to find a file which may be in a subfolder, but it could also be inside a subfolder of a subfolder. I've followed this answer's approach, but still...
When I place the file inside the 'second subfolder, the script is not finding it.
function updateClientWb() {
var clientId = 'AA001'
var parent_folderID = 'folderidsafafdasadasda2D-U';
var parent_folder = DriveApp.getFolderById(parent_folderID);
var subFolders = parent_folder.getFolders();
var searchForClientId = "title contains '" + clientId + "'";
var clientSeoProjectWb = [];
while (subFolders.hasNext()) {
var thisSubFolder = subFolders.next();//THIS IS PROBABLY WHERE THE FLAW IS
var clientFiles = thisSubFolder.searchFiles(searchForClientId);
while (clientFiles.hasNext()) {
var files = clientFiles.next();
if (files.getName().indexOf('File Name Part') > -1) {
clientSeoProjectWb.push(files.getId());
}
}
}
return;
}
Appreciate your help
Solution 1:[1]
Files in folders
function getFilesAndFolders() {
const fldr = DriveApp.getFolderById(gobj.globals.projectsfolderid);
SpreadsheetApp.getActive().getSheetByName('Sheet0').clearContents();
SpreadsheetApp.getActive().toast('Entry');
getFnF(fldr);
SpreadsheetApp.getActive().toast('EOF');
}
function getFnF1(folder = DriveApp.getRootFolder()) {
let tree = JSON.parse(PropertiesService.getScriptProperties().getProperty('FnF'));
//Logger.log(JSON.stringify(tree));
if (tree.level < level) {
tree.level = level;
PropertiesService.getScriptProperties().setProperty('FnF', JSON.stringify(tree));
}
const files = folder.getFiles();
let row = Array.from([...Array(level).keys()], ((x, i) => { if (i == level - 1) { x = folder.getName(); } else { x = ''; } return x; }));
tree.txt.push(row);
row = Array.from([...Array(level).keys()], ((x, i) => { if (i == level - 1) { x = 'bold'; } else { x = 'normal'; } return x; }));
tree.fwt.push(row);
PropertiesService.getScriptProperties().setProperty('FnF', JSON.stringify(tree));
if (files.hasNext()) {
let row = Array.from([...Array(level).keys()], ((x, i) => { if (i == level - 1) { x = 'Files:'; } else { x = ''; } return x; }));
tree.txt.push(row);
tree.fwt.push(['normal']);
PropertiesService.getScriptProperties().setProperty('FnF', JSON.stringify(tree));
}
while (files.hasNext()) {
let file = files.next();
let row = Array.from([...Array(level + 1).keys()], ((x, i) => { if (i == level) { x = file.getName(); } else { x = ''; } return x; }));
tree.txt.push(row);
tree.fwt.push(['normal']);
PropertiesService.getScriptProperties().setProperty('FnF', JSON.stringify(tree));
}
const subfolders = folder.getFolders()
while (subfolders.hasNext()) {
let subfolder = subfolders.next();
level++;
getFnF1(subfolder);
}
level--;
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Cooper |