У меня есть скрипт, который удаляет строки, где дата была в прошлом, но по мере того, как электронная таблица выросла, время ожидания истекло.Может кто-нибудь предложить, как сделать это быстрее, так как я понимаю, что у нас есть жестко установленный лимит 6 минут для тайм-аутов
function approveRequests() {
// Initialising
var ss = SpreadsheetApp.getActiveSpreadsheet();
//var scheduleSheet = ss.getSheetByName("Combined");
var sheet = SpreadsheetApp.getActiveSheet();
var pastSheet = ss.getSheetByName("Left");
var lastColumn = ss.getLastColumn();
var allsheets = ss.getSheets();
for(var s in allsheets){
var sheet = allsheets[s];
// Stop iteration execution if the condition is meet.
if(
(sheet.getName() == "ABCDEF") ||
(sheet.getName() == "ABCDEF") ||
(sheet.getName() == "ABCDEF") ||
(sheet.getName() == "ABCDEF") ||
(sheet.getName() == "ABCDEF") ||
(sheet.getName() == "ABCDEF") ||
(sheet.getName() == "ABCDEF") ||
(sheet.getName() == "ABCDEF") ||
(sheet.getName() == "ABCDEF")
) continue;
for(var i = sheet.getLastRow(); i > 0; i--){
// Check if the value is a valid date
// 15 is for Col O
var dateCell = sheet.getRange(i, 15).getValue();
if(isValidDate(dateCell)){
var today = new Date();
var test = new Date(dateCell);
// If the value is a valid date and is a past date, we remove it from the sheet to paste on the other sheet
if(test < today){
var rangeToMove = sheet.getRange(i, 1, 1, sheet.getLastColumn()).getValues();
pastSheet.getRange(pastSheet.getLastRow() + 1, 1, 1, sheet.getLastColumn()).setValues(rangeToMove);
sheet.deleteRow(i);
}
}
}
} // end of loop
}
// Check is a valid date
function isValidDate(value) {
var dateWrapper = new Date(value);
return !isNaN(dateWrapper.getDate());
}