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

124
Vistas
Automatización de la celda de borrado si la celda al lado es nula, ""

Me las arreglé para automatizar muchos de mis documentos de hojas de empresas, pero estoy atascado en una cosa.

Estoy tratando de automatizar una secuencia de comandos que escanea este rango dado F11: F20 y si el valor == "" entonces borro la siguiente fila a la izquierda. Esto a continuación solo funciona si todos los campos están vacíos (y toma un tiempo, encontré esto en línea, por lo que las condiciones del bucle probablemente estén bastante desordenadas), he intentado hacer un bucle for, bucles while, lo he intentado probablemente 15 cosas fuera de la codificación dura con declaraciones if y if else (quiero hacerlo correctamente), pero simplemente no sé cómo navegar hacia abajo en ciertas celdas para escanear y eliminar en general.

Imagen de la gama F11:F20

 var ss = SpreadsheetApp.getActiveSpreadsheet(); var numCol = SpreadsheetApp.getActiveSheet().getLastColumn(); var range, substring1; //loop for (var i = 1; i <= numCol; i++) { //Here is the magic range = ss.getRange("F11:F20"); substring1 = range.getValue(); if ( substring1 === '') { range.offset(0, -1).clearContent(); } } }
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Puntos de modificación:

  • Cuando getRange y getValue se usan en un ciclo, el costo del proceso será alto. Árbitro
  • En su situación, me gustaría proponer el siguiente flujo.
    1. Recupera valores de "F11:F20".
    2. Cree la lista de rango para borrar celdas.
    3. Borre el contenido usando la lista de rango.

Cuando este flujo se refleja en un script, se convierte en lo siguiente.

Guión modificado:

 function myFunction() { var sheet = SpreadsheetApp.getActiveSheet(); var values = sheet.getRange("F11:F20").getValues(); var ranges = values.reduce((ar, [f], i) => { if (f == "") ar.push("E" + (i + 11)); return ar; }, []); sheet.getRangeList(ranges).clearContent(); }
  • En este script, se utiliza la hoja activa. Cuando desee utilizar la hoja específica, modifique var sheet = SpreadsheetApp.getActiveSheet(); to var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("###sheetname###"); .

Referencias:

  • reducir()
  • getRangeList(a1Notaciones)
about 4 years ago · Juan Pablo Isaza Denunciar

0

No veo ninguna iteración aquí... ¿dónde estás iterando en i? Parece que está mirando las mismas celdas exactas cada vez que pasa por el ciclo.

Esto solo devolvería el valor de la primera celda en su rango, que si lo está haciendo bien sería el valor en F11.

Creo que quieres algo como esto (no estoy seguro si el rango está basado en cero o en 1, aunque)

 for (var i = 1; i <= numCol; i++) { range = ss.getRange(10 + i,6); substring1 = range.getValue(); if ( substring1 === '') { range.offset(1, -1).clearContent(); } }

si el rango está basado en cero, entonces el rango obtenido debería ser (9 + i, 5)

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