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

163
Vistas
Google Sheets Script: recorra la matriz, busque elementos de la matriz con solo texto y texto parcial y reemplace el elemento completo

Tengo un código que funciona a medias, lo último que no puedo entender es cómo encontrar un elemento de matriz que contenga un número (por ejemplo, 123) y algo de texto (m/s) y reemplazar todo este elemento con una matriz completamente en blanco elemento: [] . Sin número y sin m/s.

No estoy familiarizado con la mayor parte de la terminología y soy un completo novato en esto. Esto es lo que tengo hasta ahora:

 function condForm() { var sh = ss.getSheetByName('Sheet1'); var range = sh.getRange("D4:D20"); //*** for the sake of brevity setting to 20 instead of 154 var values = range.getValues(); var row = []; var cols = values[0].length; for (var i = 0, l = values.length; i < l; i++) { row = values[i]; for (var j = 0; j < cols; j++) { if (row[j] === 'TTK') { row[j] = ''; } if(typeof row[j] != "string") { continue; } // line to allow indexOf to work if (row[j].indexOf('m/s') > -1) { var newValue = row[j].replace('m/s', '') } //attempting to use indexOf to search for partial match to m/s, does not work but does not return error } } Logger.log(values); }

Sin código, el registrador emite [[400.0], [600.0], [600.0], [600.0], [], [1283 m/s], [TTK], [440.0], [661.0], [771.0], [771.0], [], [960m/s], [TTK], [381.0], [667.0], [667.0]]

Y con el código anterior, la salida se convierte en [[400.0], [600.0], [600.0], [600.0], [], [1283m/s], [], [440.0], [661.0], [771.0], [771.0], [], [960m/s], [], [381.0], [667.0], [667.0]] = mismo número de elementos de matriz = gran éxito

Intenté usar indexOf para buscar cualquier elemento de matriz que contenga m/s. No funcionó, pero tampoco devolvió un error. ¿Que esta haciendo? ¿Estoy en la línea correcta?

Me gustaría encontrar una forma de convertir [1283m/s] y [960m/s] en espacios en blanco: [] .

Gracias por leer.

Mi código se obtuvo de Max Makhrov: https://stackoverflow.com/a/47575871/1341041

y de Andrés Duarte : https://stackoverflow.com/a/60226151/1341041

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Por lo que puedo decir, estás cambiando la row de la matriz. Pero nunca cambiará los values de la matriz.

Probablemente necesites algo como esto en el medio:

 ... if (row[j] === 'TTK') { values[i][j] = ''; } if (typeof row[j] != "string") { continue; } if (row[j].indexOf('m/s') > -1) { values[i][j] = row[j].replace('m/s', '') } ...

Pero en realidad, para su propósito, propongo usar la herramienta nativa TextFinder :

 function condForm() { const sheet = ss.getSheetByName('Sheet1'); const range = sheet.getRange('D4:D20'); // range.createTextFinder('m/s').replaceAllWith(''); range.createTextFinder('.*m/s.*').useRegularExpression(true).replaceAllWith(''); range.createTextFinder('^TTK$').useRegularExpression(true).replaceAllWith(''); }

https://developers.google.com/apps-script/reference/spreadsheet/text-finder

Por si acaso, si realmente te gustan los bucles anidados, también se puede hacer un poco más limpio de esta manera:

 var values = [[400], [600], [600], [600], [], ['1283 m/s'], ['TTK'], [440], [661], [771], [771], [], ['960m/s'], ['TTK'], [381], [667], [667]]; for (row in values) { for (col in values[row]) { if (values[row][col] == 'TTK') values[row][col] = ''; // values[row][col] = values[row][col].toString().replace(/\s*m\/s/g,''); values[row][col] = values[row][col].toString().replace(/.*m\/s.*/,''); } } console.log(values);

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