Оптимизировать код или обойти 30 сек. Ошибка переполнения запасов?
Я работаю с пользовательской функцией в моих Google Sheets, которая работает только до тех пор, пока диапазон не превышает 150 ячеек в столбце. Больше чем это создает Stackru error
Я предполагаю, что он 30 секунд. Максимум.
Я довольно новичок в этом, поэтому вся помощь приветствуется. Могу ли я как-нибудь оптимизировать код? Могу ли я обойти ограничение в 30 секунд?
Код:
function countOnAltBGColor(Colm2Chk, StartRow, EndRow, Colm2Cnt, colorref) {
/* Example formula:
=countOnAltBGColor("N",14,31,"W","N3", A1)
How this works:
=> Check color of Column N, itterate from row 14 to 31.
Is the color the in cell N<row number> same as cell N3?
Then add the value in cell W<row number> to the returned value.
So what is the A1? Just so updates happen, point it at a cell with random number.
Change that cell and the formula is recalculated.
*/
var sheet = SpreadsheetApp.getActiveSheet();
var color = sheet.getRange(colorref)
.getBackground();
// initialize values
var count = 0;
var cell2val = 0;
var cell1 = sheet.getRange(Colm2Chk + StartRow.toString());
var cell2 = sheet.getRange(Colm2Cnt + StartRow.toString());
var ChkCell = "A1";
var CntColm = "A1";
// do the loop
for (var i = StartRow; i < EndRow + 1; i++) {
ChkCell = Colm2Chk + i.toString();
CntCell = Colm2Cnt + i.toString();
cell1 = sheet.getRange(ChkCell);
cell2 = sheet.getRange(CntCell);
if (cell1.getBackground() == color)
{
count = +count + +cell2.getValue()
};
};
return count;
}