Tengo problemas para obtener datos de unos 40 libros de trabajo diferentes, cada uno con dos hojas. Las hojas están etiquetadas como 'Sesión 1' y 'Sesión 2'. Pensé que escribí el script para dividir los datos entre las dos pestañas en el maestro, pero está llenando ambas pestañas con los mismos datos de la sesión uno solamente. Nunca he publicado aquí, así que lo siento de antemano si no debía incluir una gran cantidad de mi guión, pero no tengo ni idea de a dónde ir desde aquí.
//while loop to get all files in folder while(filesIterator.hasNext()){ file = filesIterator.next(); fileType = file.getMimeType(); //if statement to find spreadsheets in folder if(fileType === "application/vnd.google-apps.spreadsheet"){ ssID = file.getId(); data = getDataFromSpreadsheet(ssID); session = getSheetNames(ssID); Logger.log(session); //Fill last cell in row w/ original file name data = data.map(function(r){return r.concat([file.getName()]);}); combinedData = combinedData.concat(data); } //end if }//end while //If statements to seperate sessions tabs if(session = SpreadsheetApp.newFilterCriteria() .whenTextContains('Session 1') .build()){ //Build session 1 spreadsheet var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Session 1"); //Clear form after every run ws.getRange("A2:D" + ws.getLastRow()).clear(); //Write data to spreadsheet ws.getRange(2, 1, combinedData.length, combinedData[0].length).setValues(combinedData); } //end if if(session = SpreadsheetApp.newFilterCriteria() .whenTextContains('Session 2') .build()){ //Build session 2 spreadsheet var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Session 2"); //Clear form after every run ws.getRange("A2:D" + ws.getLastRow()).clear(); //Write data to spreadsheet ws.getRange(2, 1, combinedData.length, combinedData[0].length).setValues(combinedData); } //end if } //Function to pull all data from workbook function getDataFromSpreadsheet(ssID) { //Open workbook var ss = SpreadsheetApp.openById(ssID); //Get all sheets in workbook and put into array var ws = ss.getSheets()[0]; //Get data in the open sheet var data = ws.getRange("A4:C" + ws.getLastRow()).getValues(); return data; } //Function to return name of sheets in workbook function getSheetNames(ssID) { var ss = SpreadsheetApp.openById(ssID); var sheets = ss.getSheets(); var sheetNames = [] sheets.forEach(function (sheet) { sheetNames.push(sheet.getName()); }); return sheetNames; }Entre otros posibles problemas, aparentemente está confundido acerca de cómo escribir " //If statements to seperate sessions tabs " (sic) porque las expresiones de declaración if como las siguientes no tienen sentido
session = SpreadsheetApp.newFilterCriteria() .whenTextContains('Session 2') .build() como siempre devolverán true (si cambia el operador de comparación a == o === aparentemente siempre devolverán false ).
Prueba session.find('Session 1') o ~session.indexOf('Session 1')
El primero devolverá un null si no se encuentra la 'Session 1' , que es falsy y el miembro del elemento, que es truthy . El segundo devolverá false o true .