То, что вы ищете, это .clearContent (), а не deleteRow.Это только очистит содержимое ячейки, но оставит все форматирование в такте.Вот документация Class Range , она действительно полезна, когда вы смотрите на то, что вы можете сделать с определенным диапазоном на листе.
Теперь, чтобы заставить это работать так, как вы хотите, вы будетенеобходимо использовать 2 для операторов, один для получения номера строки (i), а другой для получения номера столбца (j), который затем можно использовать в .getRange для запуска .clearContent () в.
function clearOldRecords() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Field1");
var dataRange = sheet.getDataRange();
var lastRow = dataRange.getLastRow();
var data = dataRange.getValues();
var currentDate = new Date();
var oneWeekAgo = new Date();
oneWeekAgo.setDate(currentDate.getDate() - 7);
for (var i = 0; i < data.length; i++) {
for (var j = 0; j < data[i].length; j++) {
var tempDate= data[i][0]; //column number is indexed from 0, change accordingly to your data
//if start date column is older than 7 days, clear the content of the row
if (tempDate!= "" && tempDate < oneWeekAgo) {
sheet.getRange(i+1,j+1).clearContent();
}
}
}
}
Итак, для более подробного объяснения, это заметные изменения, которые я внес в ваш скрипт.
Вычитание даты отрабатывается в днях, поэтому выполнение -1 займет всего 1 деньвне даты.Вам нужна неделя, поэтому я изменил это значение на -7:
oneWeekAgo.setDate(currentDate.getDate() - 7);
Скрипт также больше не сканирует последнюю строку листа, это может повлиять на производительность, если лист огромный, но в обычный день.Для сегодняшнего дня это не должно быть проблемой.
Как вы можете видеть ниже, цикл for для i получает все номера строк, а цикл j может использоваться для номеров столбцов, так как выПри попытке очистить содержимое можно увидеть в getRange ():
sheet.getRange(i+1,j+1).clearContent();
Примечание: это может оставить довольно большие пробелы в ваших данных, если они не отсортированы по дате, вы можете добавитьчто-то вроде этого для последующей сортировки (поместите это вне циклов FOR):
sheet.getRange('A1:Z').sort({column: 2, ascending: false}) //change column number accordingly, this is NOT indexed from 0