Kapitel 3 Fallstudie: die monatliche Umsatztabelle aufräumen ・ MISSION 11
Mission 11: Die Ergebnisspalte auf einmal schreiben (setValues)
Aufgabe
Schreiben Sie „Groß“ in die Kategorie jeder Zeile mit einem Betrag ab 100.000. Statt Zeile für Zeile zu schreiben, lesen Sie die Spalte auf einmal und schreiben sie auf einmal.
Zum Üben kehrt die Tabelle vor jedem Ausführen in den Ausgangszustand zurück (eine echte Tabelle tut das nicht. Änderungen durch ein Skript lassen sich manchmal mit Strg+Z rückgängig machen, aber nicht alle auf einmal).
Datei +
Code.gs
Kapitel 3 ・ MISSION 11
Die Ergebnisspalte auf einmal schreiben (setValues)
Schreiben Sie „Groß“ in die Kategorie jeder Zeile mit einem Betrag ab 100.000. Statt Zeile für Zeile zu schreiben, lesen Sie die Spalte auf einmal und schreiben sie auf einmal.
Den Code lesen
- sheet.getRange(2, 4, lastRow - 1, 1).getValues();
- Liest ab Zeile 2, Spalte 4 lastRow - 1 Zeilen und 1 Spalte (die Betragsspalte) auf einmal.
- amounts.map((row) => [row[0] >= 100000 ? 'Groß' : '']);
- Erstellt ein Array mit „Groß“ für Zeilen ab 100.000 und sonst leer. Bedingung ? A : B ist eine Schreibweise für if in einer Zeile.
- sheet.getRange(2, 5, labels.length, 1).setValues(labels);
- Schreibt labels auf einmal in Spalte E, so viele Zeilen wie labels hat.
Mit getValues auf einmal lesen, mit map Zeile für Zeile umwandeln und mit setValues auf einmal schreiben. Das ist schneller als Zelle für Zelle, selbst Tausende Zeilen lassen Sie nicht warten. Haben Bereich und Array unterschiedlich viele Zeilen, erscheint der Fehler „The number of rows in the data does not match …“.
Wie Sie mit GAS anfangen und häufigen Code finden Sie in einem Artikel.Was ist GAS? Einstieg und häufiger Code
Ihr Code läuft in einem abgeschotteten Bereich innerhalb dieser Seite und erreicht weder die Seite selbst noch andere Websites.
* Dies ist eine Simulation des Verhaltens von Google Tabellen und Apps Script und kann in Teilen vom Original abweichen.
* Google Tabellen ist eine Marke von Google LLC. Diese Website steht in keiner Verbindung zu Google.