Necesito encontrar con Apps Script una hoja específica en la estructura de carpetas de mi hoja real (encontrada filtrada por fragmento de título, por ejemplo). Pero a veces está en el padre directo y otras dos o tres carpetas detrás, así que quiero la solución más versátil para trabajar en diferentes situaciones. ¿Cuál será la mejor y más limpia manera?
[ FILE TO FIND ] [ FOLDER 1 ] [ ACTUAL FILE ] [ FOLDER 2 ] [ ] [ FILE TO FIND ] [ ACTUAL FILE ]Mi código para encontrar el archivo (solo en la carpeta principal en este momento)
var carpetapanelc = carpetabasecs.getParents(); var carpetapanelcid = carpetapanelc.next().getId(); var carpetapanelcname = DriveApp.getFolderById(carpetapanelcid); var searchFor ='title contains "Panel"'; var names =[]; var filePanelIds=[]; var filesPanel = carpetapanelcname.searchFiles(searchFor); while (filesPanel.hasNext()) { var filePanel = filesPanel.next(); var filePanelId = filePanel.getId();// To get FileId of the file filePanelIds.push(filePanelId); var filePanelname = filePanel.getName(); var filePanelurl = filePanel.getUrl(); names.push(filePanelname); }¡Gracias!
function getFilesInParentFolders(fileid="") { var file = DriveApp.getFileById(fileid) var fldrA = []; var filA = []; var folder = file.getParents(); while (folder.hasNext()) { var f = folder.next(); fldrA.push(f.getId()); folder = f.getParents() } for(let i = 0;i<fldrA.length; i++) { let files = DriveApp.getFolderById(fldrA[i]).getFilesByType(MimeType.GOOGLE_SHEETS); while(files.hasNext()) { let file = files.next() if(file.getName().includes("Test")) { filA.push({name:file.getName(),id:file.getId(),parent:fldrA[i]}); } } } Logger.log(JSON.stringify(filA)); } This runs off of the folder id instead of a file id function getFilesInParentFolders(folderid="") { var fldrA = []; var filA = []; var folder = DriveApp.getFolderById(folderid).getParents(); while (folder.hasNext()) { var f = folder.next(); fldrA.push(f.getId()); folder = f.getParents() } for(let i = 0;i<fldrA.length; i++) { let files = DriveApp.getFolderById(fldrA[i]).getFilesByType(MimeType.GOOGLE_SHEETS); while(files.hasNext()) { let file = files.next() if(file.getName().includes("Test")) { filA.push({name:file.getName(),id:file.getId(),parent:fldrA[i]}); } } } Logger.log(JSON.stringify(filA)); }