Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

121
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda