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

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

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 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!