Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

118
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!