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

268
Vistas
Google App Script: buscar y reemplazar para columnas específicas

Aquí está el problema y la lógica para el script de búsqueda y reemplazo que estoy usando.

  • Hoja de búsqueda para la cadena to_replace .
    • Si lo encuentra, reemplace to_replace con replace_with .
    • Si no se encuentra, reemplace to_replace con to_replace // Esto no es necesario y causa problemas (reemplaza todas las fórmulas y las reemplaza con una cadena).

Mi objetivo:

Me gustaría que el script solo reemplace las celdas que coincidan con to_replace e ignore todas las demás celdas.

Mi solución de novato:

Excluya columnas específicas en el foro eliminando la columna C de la matriz usando el script de aquí . (solo busque y reemplace dentro de las Columnas B y D).

Aquí está el código modificado que agregué en My Current Script...

 const range = sheet.getRange('B2:D'+lastRow).getValues(); range.forEach(a => a.splice(1, 1)); //removes column C.

Pero me sale el error: "TypeError: var data = range.getValues(); no es una función"

Pregunta

¿Puede ayudarme a solucionar mi solución de novato o enseñarme una mejor manera de resolver este problema?


Mi guion actual

 function findAndReplace(){ var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1'); var lastRow = sheet.getLastRow() var lastColumn = sheet.getLastColumn() // var range = sheet.getRange(1, 1, lastRow, lastColumn) //REMOVED - Searches all columns. const range = sheet.getRange('B2:D'+lastRow).getValues(); //ADDED - Searches only B & D range.forEach(a => a.splice(1, 1)); //ADDED - Searches only B & D var to_replace = "TextToFind"; var replace_with = ""; //Leave blank to delete Text, or enter text in quotes to add string. var data = range.getValues(); var oldValue=""; var newValue=""; var cellsChanged = 0; for (var r=0; r<data.length; r++) { for (var i=0; i<data[r].length; i++) { oldValue = data[r][i]; newValue = data[r][i].toString().replace(to_replace, replace_with); if (oldValue!=newValue) { cellsChanged++; data[r][i] = newValue; } } } range.setValues(data); }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

De teach me a better way to solve this problem , en su situación, pensé que cuando se usa TextFinder, el costo del proceso podría reducirse. Cuando TextFinder se usa para lograr su objetivo, se convierte en lo siguiente.

Guión de muestra:

 function myFunction() { var to_replace = "TextToFind"; var replace_with = ""; //Leave blank to delete Text, or enter text in quotes to add string. var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1'); var lastRow = sheet.getLastRow(); var ranges = ['B2:B' + lastRow, 'D2:D' + lastRow]; sheet.getRangeList(ranges).getRanges().forEach(r => r.createTextFinder(to_replace).matchEntireCell(true).replaceAllWith(replace_with) ); }

Nota:

  • Si desea reemplazar la parte del valor de la celda, modifique r.createTextFinder(to_replace).matchEntireCell(true).replaceAllWith(replace_with) a r.createTextFinder(to_replace).replaceAllWith(replace_with) .

  • Como modificación adicional, si se modifica su script, ¿qué tal la siguiente modificación?

     function findAndReplace() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1'); var lastRow = sheet.getLastRow() var range = sheet.getRange('B2:D' + lastRow); var data = range.getValues(); var to_replace = "TextToFind"; var replace_with = ""; //Leave blank to delete Text, or enter text in quotes to add string. for (var r = 0; r < data.length; r++) { for (var i = 0; i < data[r].length; i++) { var value = data[r][i].toString(); if (i != 1 && value.includes(to_replace)) { data[r][i] = data[r][i].replace(to_replace, replace_with); } } } range.setValues(data); }

Referencias:

  • createTextFinder(buscarTexto)
  • Buscador de texto de clase
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