Как ускорить скрипт для гугл таблицы?
Имеется скрипт, который размещается в таблице 1 и редактирует другую таблицу, при добавлении строк в таблицу 1. На каждом листе 700+ строк и скрипт успевает выполниться только на 7 из 13 листов и вылетает с ошибкой **Exceeded maximum execution time (Время ожидания истекло) ** Можете пожалуйста как то помочь ускорить данный код?
function onChanegTrigger1(event){
//-------------------------------------//===//-------------------------------//
const destinationSsId = "MyId";
const destinationSheetName1 = "List1";
const sourceSheetName = "Таблица";
const firstStaticDataColumn = 1;
if (event["changeType"]!=="INSERT_ROW"){
return;
};
SpreadsheetApp.flush();
let activeRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sourceSheetName).getActiveRange();
let rowBySelection = activeRange.getRow();
let insertRows = activeRange.getNumRows();
let destinationSheet = SpreadsheetApp.openById(destinationSsId)
.getSheetByName(destinationSheetName1);
destinationSheet//На чём работаем
.getRange(//выделяем диапазон
rowBySelection,/*!!!!!!!!!!!!!!если есть отступ, то увеличиваем,!!!!!!!!!!!!!*///выбранная строка
firstStaticDataColumn,//первый столбик
destinationSheet.getLastRow()-rowBySelection+1,//последняя строки - выбранная строка + 1
destinationSheet.getLastColumn()-firstStaticDataColumn+2 //последний столбик - номер столбца первых статических данных + 2
)
.moveTo(//перемещаем диапазон
destinationSheet//на чём работаем
.getRange(//выдаляем диапазон в который вставляем
rowBySelection+insertRows,/*!!!!!!!!!!!!!!тут тоже!!!!!!!!!!!!!*///выбранная строка + кол-во добавленных строк
firstStaticDataColumn,//первый столбик
destinationSheet.getLastRow()-rowBySelection+1,//последняя строки - выбранная строка + 1
destinationSheet.getLastColumn()-firstStaticDataColumn+2//последний столбик - номер столбца первых статических данных + 2
)
)
//все остальные листы по аналогии, только меняем их имя и всё.
//-----------------------------//===//---------------------------------//
//работаем с листом "==="
const destinationSheetName2 = "List2";// Имя целевого листа
let destinationSheet2 = SpreadsheetApp.openById(destinationSsId)
.getSheetByName(destinationSheetName2);
destinationSheet2
.getRange(
rowBySelection,
firstStaticDataColumn,
destinationSheet2.getLastRow()-rowBySelection+1,
destinationSheet2.getLastColumn()-firstStaticDataColumn+2
)
.moveTo(
destinationSheet2
.getRange(
rowBySelection+insertRows,
firstStaticDataColumn,
destinationSheet2.getLastRow()-rowBySelection+1,
destinationSheet2.getLastColumn()-firstStaticDataColumn+2
)
)
//-----------------------------//==//---------------------------------//
//Работаем с листом "===="
const destinationSheetName3 = "List3";// Имя целевого листа
let destinationSheet3 = SpreadsheetApp.openById(destinationSsId)
.getSheetByName(destinationSheetName3);
destinationSheet3
.getRange(
rowBySelection,
firstStaticDataColumn,
destinationSheet3.getLastRow()-rowBySelection+1,
destinationSheet3.getLastColumn()-firstStaticDataColumn+2
)
.moveTo(
destinationSheet3
.getRange(
rowBySelection+insertRows,
firstStaticDataColumn,
destinationSheet3.getLastRow()-rowBySelection+1,
destinationSheet3.getLastColumn()-firstStaticDataColumn+2
)
)
//-----------------------------//===//---------------------------------//
//Работаем с листом ""
const destinationSheetName4 = "List4";// Имя целевого листа
let destinationSheet4 = SpreadsheetApp.openById(destinationSsId)
.getSheetByName(destinationSheetName4);
destinationSheet4
.getRange(
rowBySelection,
firstStaticDataColumn,
destinationSheet4.getLastRow()-rowBySelection+1,
destinationSheet4.getLastColumn()-firstStaticDataColumn+2
)
.moveTo(
destinationSheet4
.getRange(
rowBySelection+insertRows,
firstStaticDataColumn,
destinationSheet4.getLastRow()-rowBySelection+1,
destinationSheet4.getLastColumn()-firstStaticDataColumn+2
)
)
//-----------------------------//===//---------------------------------//
//Работаем с листом "==="
const destinationSheetName5 = "List5";// Имя целевого листа
let destinationSheet5 = SpreadsheetApp.openById(destinationSsId)
.getSheetByName(destinationSheetName5);
destinationSheet5
.getRange(
rowBySelection,
firstStaticDataColumn,
destinationSheet5.getLastRow()-rowBySelection+1,
destinationSheet5.getLastColumn()-firstStaticDataColumn+2
)
.moveTo(
destinationSheet5
.getRange(
rowBySelection+insertRows,
firstStaticDataColumn,
destinationSheet5.getLastRow()-rowBySelection+1,
destinationSheet5.getLastColumn()-firstStaticDataColumn+2
)
)
};
Источник: Stack Overflow на русском