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

154
Visualizações
Borrar contenido para datos filtrados

Logré crear un script para eliminar filas cuando se filtra, pero no logré crear una función de contenido claro cuando se filtra. Código de la siguiente manera:

 var sheet = SpreadsheetApp.getActive().getSheetByName('data'); var lastRow = sheet.getLastRow() var lastColumn = sheet.getLastColumn() function deleterow_d3() { var RANGE = sheet.getRange(1, 1, lastRow, lastColumn) var rangeVals = RANGE.getValues(); if (sheet.getFilter() != null) { sheet.getFilter().remove() } var filteredRange = RANGE.createFilter() var millis_per_day = 1000 * 60 * 60 * 72; // 3 days var today = new Date(); var criteria = SpreadsheetApp.newFilterCriteria().whenDateEqualTo(new Date(today.getTime() - millis_per_day)).setHiddenValues(['']).build(); sheet.getFilter().setColumnFilterCriteria(5, criteria); // which column to filter from, criteria is the date var deletedrows = lastRow - 3 sheet.deleteRows(2, deletedrows) // to delete rows sheet.getFilter().remove() }

Los datos se filtran por fecha y luego se elimina todo el contenido dentro del filtro. En lugar de eliminar las filas, solo quiero borrar el contenido.

about 4 years ago · Santiago Gelvez
1 Respostas
Responde à pergunta

0

Trata de cambiar:

 sheet.deleteRows(2, deletedrows) // to delete rows

a:

 for (var i = 2; i < deletedrows; i++) { if (!sheet.isRowHiddenByFilter(i)) { sheet.getRange(i,1,1,lastColumn).clearContent(); } }

Debería funcionar bien para varias filas, tal vez para un par de docenas de filas. Pero si tiene varias docenas o cientos de filas para borrar, este enfoque no es eficiente, necesitará una solución más complicada.

Actualizar

Aquí está el ejemplo de cómo se puede hacer de una manera más inteligente:

 function myFunction() { var sheet = SpreadsheetApp.getActiveSheet(); var range = sheet.getDataRange(); var three_days_ago = new Date().setHours(0,0,0,0) - 1000 * 60 * 60 * 72; var data = range.getValues(); data.forEach((row,i) => { if (new Date(row[4]).getTime() == three_days_ago) data[i] = new Array(row.length); }) range.setValues(data); }

Toma todas las celdas de la hoja como una matriz 2d, limpia las filas de la matriz si la fecha en la quinta columna == hace tres días y vuelve a colocar la matriz en la hoja.

about 4 years ago · Santiago Gelvez 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