Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

181
Vistas
Extraer datos de varios libros de trabajo y hojas

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; }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

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 .

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda