Estoy probando un script para extraer datos de un nombre de hoja dado y un rango dado en 1 hoja principal. el problema en este caso es que las hojas de cálculo (con varias hojas) se archivan en diferentes carpetas. entonces tengo 1 carpeta principal y en esa carpeta tengo carpetas de archivo para cada año (2012-2022).
He creado un script que está pasando por estas carpetas y obtengo los Id. de carpeta en los que está funcionando esa parte.
También he hecho un script para sacar los datos de la hoja ("Rekenblad") y el rango "A11:AY136". Creo que eso también debería funcionar.
La parte donde conecto esas 2 funciones va mal. Lo que recibiría es:
Un archivo principal (El script está dentro del archivo principal) con:
El más importante es el punto 2. El punto 1 es solo para mí verificar si todos los archivos se importaron correctamente y un enlace para que pueda verificar fácilmente esos archivos.
El guión se ve así:
function listFolders(folder) { var sheet = SpreadsheetApp.getActiveSheet().clearContents(); sheet.appendRow(["Name", "URL","ssId", "Type"]); var folder = DriveApp.getFolderById("FOLDER_ID_PARENT_FOLDER"); var subfolders = folder.getFolders(); while (subfolders.hasNext()) { //Logger.log(folder); var name = subfolders.next(); while (subfolders.hasNext()) { //Logger.log(folder); var name = subfolders.next(); var files = name.getFiles(); var cnt = 0; var file; var ssID var fileType var combinedData = [] while (files.hasNext()) { var file = files.next(); cnt++; Logger.log(file); Logger.log(cnt); data = [ file.getName(), file.getUrl(), ssID = file.getId(), fileType = file.getMimeType(), ]; sheet.appendRow(data); if (fileType ==="application/vnd.google-apps.spreadsheet"){ ssID = files.getId(); data = GetData(ssID) data = data.map(function(r){return r.concat([file.getName()]);}); combinedData = combinedData.concat(data); } } var wss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Blad1") ; ws.getRange("A2:AY").clearContent(); wss.getRange(2, 1, combinedData.length, combinedData[0].length).setValues(combinedData); } } } function GetData(ssID){ var aa = SpreadsheetApp.openById(ssID); var wa = aa.getSheetByName("Rekenblad"); var info = wa.getRange("A11:AY136").getValues(); return info }