Requirement is to archive all the rows older than 3 years and insert those rows into a different tab in the same spread sheet.
I have below code to archive rows to another tab where date is older than 3 years . The below code is deleting all the rows before 3 years in the source tab correctly ,but it is not inserting the deleted rows to the target tab (archived rows).please let me know how to fix this code
const ss = SpreadsheetApp.getActive()
const shSource = ss.getSheetByName('Incident Report Details')
const shTarget = ss.getSheetByName('Archived rows')
function myFunction() {
const COL_DATE = 1
const HEADER_HEIGHT = 1
if(shSource.getLastRow()==HEADER_HEIGHT){
return
}
const data = shSource.getRange(1+HEADER_HEIGHT,1,shSource.getLastRow()-HEADER_HEIGHT, shSource.getLastColumn())
data.sort(COL_DATE) // prepare for deletion of continous rows
const minDate = new Date()
minDate.setMonth(minDate.getMonth()-36)
const rowsToDelete = data.getValues().filter(row=>row[COL_DATE-1]<minDate)
if(rowsToDelete.length>0){
console.log(`Delete ${rowsToDelete.length} rows where date is before ${minDate}`)
shTarget.insertRowsAfter(shTarget.getLastRow(), rowsToDelete.length)
shTarget.getRange(shTarget.getLastRow()+1,1, rowsToDelete.length, rowsToDelete[0].length).setValues(rowsToDelete)
} else{
console.log(`No rows to delete`)
}
shSource.deleteRows(HEADER_HEIGHT+1, rowsToDelete.length)
}
Updated answer:
Your code is working fine for me. Just added the deleteRows statement inside IF.
Earlier answer (Please ignore):
Add this line before deleting rows
Spreadsheet operations are sometimes bundled together to improve performance. However, sometimes you may want to make sure that all pending changes are made right away as a scriptYour code is executingworking fine for me.