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