Array.push.setAnyFormatting ( 'красный')?

Описание:

Пользователь Stack Overflow mhawksey недавно сделал несколькофантастическая оптимизация моего кода, и при этом познакомил меня с супер эффективными толчками массива. Но работать с массивами довольно сложно, потому что я не могу использовать функции, которые могу использовать при традиционном подходе .getRange / .setValue.

Проблема:

Мне нужно интегрировать .setFontColors («красный») и .setBackgroundColors («белый»).

Код и изображения:

Сначала я выложу код. Во-вторых, изображение того, чтоВ настоящее время код делает. В-третьих, изображение того, что кодпотребности сделать.

function format() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getActiveSheet();
  var lastRow = s.getLastRow();
  var row;

  //gets a [][] of all values in the column
  var data = s.getRange("A:A").getValues();
  //we are going to build a [][] to output result
  var output = [];

  //loop through all cells in column A
  for (row = 0; row < lastRow; row++) {
    var cellValue = data[row][0];
    var dash = false;
    if (typeof cellValue === 'string') {
      dash = cellValue.substring(0, 1);
    //if a number copy to our output array
    } else {
      output.push([cellValue]);
    }

    //if -dash
    if (dash === "-") {
      //build first + last name
      var name = (data[(row+1)][0]+" "+data[(row+2)][0]).trim();
      //add row for the -state (e.g. -MI)
      output.push([cellValue]);
      output.push([name]);
      output.push(["Order complete"]);
      //add a blank row
      output.push([""]);
      //jump an extra row to speed things up
      row++;
    }
  }
  //set the values we've made in our output [][] array
  s.getRange(1, 1, output.length).setValues(output);
}

Вот что делает код:

Вот чего я пытаюсь добиться:

Обновить:

Я добавил простой, работающий цикл форматирования. Проблема в том, что когда я запускаю его на более длинном столбце данных, обработка занимает слишком много времени. Из того, что я понимаю из комментариев, я не могу быстро отформатировать таблицу. Я ошибся?

Добавленный код форматирования:

//other variables
var range1;

  //loop through column A
  for (var row = 0; row < lastRow; row++) {
    range1 = s.getRange(row + 1, 1);

    //define offsets for if statement
    var offset1 = range1.offset(1, 0);
    var offset2 = range1.offset(2, 0);

    //substring cannot run on numbers, so...
    cellValue = range1.getValue();
    if (typeof cellValue === 'number') {continue;};
    dash = cellValue.substring(0, 1);

    //if -
    if (dash === "-") {
       offset1.setFontColor('red');
       offset2.setBackground('green');
     };
   };

Ответы на вопрос(2)

Ваш ответ на вопрос