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.
Trata de cambiar:
sheet.deleteRows(2, deletedrows) // to delete rowsa:
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.