Оптимизировать код или обойти 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;

}

0 ответов

Другие вопросы по тегам