Array.push.setAnyFormatting ('red')?

Beschreibung

Stack Overflow Benutzer mhawksey hat vor kurzem einige fantastische Optimierung meines Codes, und auf diese Weise führte mich zu super effizienten Array-Pushs. Die Arbeit mit Arrays ist jedoch etwas schwierig, da ich scheinbar nicht in der Lage bin, Funktionen zu verwenden, die ich mit dem herkömmlichen .getRange / .setValue-Ansatz kann.

Problem

Ich muss .setFontColors ('red') und .setBackgroundColors ('white') integrieren.

Code und Bilder:

Zunächst werde ich den Code posten. Zweitens ein Bild von dem, was diezur Zei code funktioniert. Drittens ein Bild von dem, was der Code braucht machen

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);
}

Das macht der Code:

Das versuche ich zu erreichen:

Aktualisieren

Ich habe eine einfache, funktionierende Formatierungsschleife angehängt. Das Problem ist, wenn ich es auf einer längeren Datenspalte ausführe, dauert die Verarbeitung zu lange. Nach meinem Verständnis der Kommentare kann ich eine Tabelle nicht schnell formatieren. Liege ich falsch

Angehängter Formatierungscode:

//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');
     };
   };

Antworten auf die Frage(4)

Ihre Antwort auf die Frage