1. Einführung
Willkommen zum zweiten Teil der Codelab-Playlist „Grundlagen von Apps Script mit Google Tabellen“. Im vorherigen Codelab ging es um die Konzepte des Script-Editors, Makros und benutzerdefinierte Funktionen. In diesem Codelab geht es um den Tabellendienst, mit dem Sie Daten in Google Sheets lesen, schreiben und bearbeiten können.
Lerninhalte
- So werden Tabellen, Blätter und Bereiche in Apps Script dargestellt.
- So greifen Sie mit der Klasse
SpreadsheetApp
undSpreadsheet
auf die aktive (offene) Tabelle zu, erstellen und benennen sie um. - So ändern Sie den Namen eines Tabellenblatts und die Spalten-/Zeilenausrichtung eines Bereichs mit der Klasse
Sheet
. - So geben Sie eine Gruppe von Zellen oder einen Datenbereich mit der Klasse
Range
an, aktivieren, verschieben und sortieren Sie sie.
Hinweis
Dies ist das zweite Codelab in der Playlist „Grundlagen von Apps Script mit Google Tabellen“. Bevor Sie beginnen, sollten Sie das erste Codelab Makros und benutzerdefinierte Funktionen durcharbeiten.
Voraussetzungen
- Grundlegende Kenntnisse der Apps Script-Themen, die im vorherigen Codelab dieser Playlist behandelt wurden.
- Grundlegende Kenntnisse des Apps Script-Editors
- Grundlegende Kenntnisse von Google Sheets
- Kann A1-Notation in Google Sheets lesen
- Grundkenntnisse in JavaScript und der
String
-Klasse
Im nächsten Abschnitt werden die wichtigsten Klassen des Tabellendienstes vorgestellt.
2. Einführung in den Tabellendienst
Vier Klassen bilden die Grundlage des Tabellendienstes: SpreadsheetApp
, Spreadsheet
, Sheet
und Range
. In diesem Abschnitt werden diese Klassen und ihre Verwendung beschrieben.
Die Klasse „SpreadsheetApp“
Bevor Sie sich mit Tabellen, Blättern und Bereichen befassen, sollten Sie sich die übergeordnete Klasse SpreadsheetApp
ansehen. Viele Scripts beginnen mit dem Aufrufen von SpreadsheetApp
-Methoden, da sie den ersten Zugriffspunkt auf Ihre Google Sheets-Dateien bieten können. SpreadsheetApp
ist die Hauptklasse des Tabellendienstes. Die Klasse SpreadsheetApp
wird hier nicht ausführlich behandelt. Später in diesem Codelab finden Sie jedoch sowohl Beispiele als auch Übungen, die Ihnen helfen, diese Klasse zu verstehen.
Tabellen, Blätter und ihre Klassen
In Google Tabellen ist eine Tabelle eine Google Tabellen-Datei (in Google Drive gespeichert), die Daten enthält, die nach Zeilen und Spalten organisiert sind. Eine Tabelle wird manchmal als „Google-Tabelle“ bezeichnet, so wie ein Dokument als „Google-Dokument“.
Mit der Klasse Spreadsheet
können Sie auf Google Sheets-Dateidaten zugreifen und sie ändern. Sie können diese Klasse auch für andere Vorgänge auf Dateiebene verwenden, z. B. zum Hinzufügen von Mitbearbeitern.
Ein Tabellenblatt** stellt die einzelne Seite einer Tabelle dar, die manchmal auch als „Tab“ bezeichnet wird. Jede Tabelle kann ein oder mehrere Tabellenblätter enthalten. Mit der Klasse Sheet
** können Sie auf Daten und Einstellungen auf Tabellenebene zugreifen und diese ändern, z. B. Zeilen oder Spalten mit Daten verschieben.
Zusammenfassend lässt sich sagen, dass die Klasse Spreadsheet
für die Sammlung von Tabellenblättern zuständig ist und eine Google-Tabellen-Datei in Google Drive definiert. Die Klasse Sheet
wird für einzelne Tabellenblätter in einer Tabelle verwendet.
Die Klasse „Range“
Für die meisten Datenbearbeitungsvorgänge (z. B. Lesen, Schreiben oder Formatieren von Zellendaten) müssen Sie definieren, auf welche Zellen sich der Vorgang bezieht. Mit der Klasse Range
können Sie bestimmte Zellengruppen in einem Tabellenblatt auswählen. Instanzen dieser Klasse stellen einen Bereich dar, also eine Gruppe von einer oder mehreren angrenzenden Zellen in einem Tabellenblatt. Sie können Bereiche anhand ihrer Zeilen- und Spaltennummern oder mit der A1-Notation angeben.
Im Rest des Codelabs finden Sie Beispiele für Skripts, die mit diesen Klassen und ihren Methoden funktionieren.
3. Einrichten
Bevor Sie fortfahren, benötigen Sie eine Tabelle mit Daten. Wir haben eines für Sie bereitgestellt: Klicken Sie auf diesen Link, um das Datenblatt zu kopieren, und klicken Sie dann auf Kopie erstellen.
Eine Kopie der Beispieltabellenkalkulation wird in Ihrem Google Drive-Ordner gespeichert und erhält den Namen „Kopie von Unbenannte Tabelle“. Verwenden Sie diese Tabelle, um die Übungen in diesem Codelab zu absolvieren.
Zur Erinnerung: Sie können den Skripteditor in Google Sheets öffnen, indem Sie auf Erweiterungen> Apps Script klicken.
Wenn Sie ein Apps Script-Projekt zum ersten Mal im Script-Editor öffnen, werden sowohl ein Script-Projekt als auch eine Script-Datei für Sie erstellt.
Im nächsten Abschnitt erfahren Sie, wie Sie die Klasse Spreadsheet
verwenden, um diese Tabelle zu verbessern.
4. Auf Tabellen zugreifen und sie bearbeiten
In diesem Abschnitt erfahren Sie, wie Sie mit den Klassen SpreadsheetApp
und Spreadsheet
auf Tabellen zugreifen und sie ändern. In den Übungen lernen Sie, wie Sie eine Tabelle umbenennen und Tabellenblätter in einer Tabelle duplizieren.
Das sind einfache Vorgänge, die aber oft Teil eines größeren, komplexeren Workflows sind. Wenn Sie wissen, wie Sie diese Aufgaben mit Scriptcode automatisieren, ist es einfacher, komplexere Vorgänge zu automatisieren.
Aktive Tabelle umbenennen
Angenommen, Sie möchten den Standardnamen „Kopie von Unbenannte Tabelle“ in einen Titel ändern, der den Zweck Ihrer Tabelle besser widerspiegelt. Dazu können Sie die Klassen SpreadsheetApp
und Spreadsheet
verwenden.
- Ersetzen Sie im Skripteditor den Standardcodeblock
myFunction()
durch den folgenden Code:
function renameSpreadsheet() {
var mySS = SpreadsheetApp.getActiveSpreadsheet();
mySS.rename("2017 Avocado Prices in Portland, Seattle");
}
- Klicken Sie auf „Speichern“
, um das Script zu speichern.
- Wenn Sie Ihr Apps Script-Projekt umbenennen möchten, klicken Sie auf Unbenanntes Projekt, geben Sie „Avocado prices“ (Avocadopreise) als neuen Projektnamen ein und klicken Sie auf Umbenennen.
- Wenn Sie Ihr Skript ausführen möchten, wählen Sie
renameSpreadsheet
aus der Funktionsliste aus und klicken Sie auf Ausführen. - Autorisieren Sie das Makro, indem Sie der Anleitung auf dem Bildschirm folgen. Wenn die Meldung „Diese App ist nicht verifiziert“ angezeigt wird, klicken Sie auf Erweitert und dann auf Zu Avocado-Preise (unsicher). Klicken Sie auf dem nächsten Bildschirm auf Zulassen.
Nachdem die Funktion ausgeführt wurde, sollte sich der Dateiname Ihrer Tabelle ändern:
Sehen wir uns den eingegebenen Code an. Die Methode getActiveSpreadsheet()
gibt ein Objekt zurück, das die aktive Tabelle darstellt, also die Kopie der Übungstabelle, die Sie erstellt haben. Dieses Tabellenobjekt wird in der Variablen mySS
gespeichert. Durch den Aufruf von rename(newName)
für mySS
wird der Name der Tabellenkalkulationsdatei in Google Drive in „2017 Avocado Prices in Portland, Seattle“ geändert.
Da die Variable mySS
ein Verweis auf die Tabelle ist, können Sie Ihren Code übersichtlicher und effizienter gestalten, indem Sie Spreadsheet
-Methoden für mySS
aufrufen, anstatt getActiveSpreadsheet()
wiederholt aufzurufen.
Aktives Tabellenblatt duplizieren
Ihre aktuelle Tabelle enthält nur ein Tabellenblatt. Sie können die Methode Spreadsheet.duplicateActiveSheet()
aufrufen, um eine Kopie des Tabellenblatts zu erstellen:
- Fügen Sie die folgende neue Funktion unter der Funktion
renameSpreadsheet()
hinzu, die sich bereits in Ihrem Skriptprojekt befindet:
function duplicateAndOrganizeActiveSheet() {
var mySS = SpreadsheetApp.getActiveSpreadsheet();
var duplicateSheet = mySS.duplicateActiveSheet();
}
- Speichern Sie Ihr Skriptprojekt.
- Wenn Sie Ihr Skript ausführen möchten, wählen Sie
duplicateAndOrganizeActiveSheet
aus der Funktionsliste aus und klicken Sie auf Ausführen.
Kehren Sie zu Google Tabellen zurück. In Ihrer Tabelle wurde ein neuer Tabellenblatt-Tab „Kopie von Sheet_Original“ hinzugefügt.
In dieser neuen Funktion wird mit der Methode duplicateActiveSheet()
das duplizierte Tabellenblatt in Ihrer Tabelle erstellt, aktiviert und zurückgegeben. Das resultierende Tabellenblatt wird in duplicateSheet
gespeichert, aber der Code tut noch nichts mit dieser Variablen.
Im nächsten Abschnitt verwenden Sie die Klasse Sheet
, um das doppelte Tabellenblatt umzubenennen und zu formatieren.
5. Tabelle mit der Klasse „Sheet“ formatieren
Die Klasse Sheet
bietet Methoden, mit denen Skripts Tabellen lesen und aktualisieren können. In diesem Abschnitt erfahren Sie, wie Sie den Namen eines Tabellenblatts und die Spaltenbreiten mit Methoden aus der Klasse Sheet
ändern.
Namen des Tabellenblatts ändern
Das Umbenennen von Tabellenblättern ist genauso einfach wie das Umbenennen von Tabellen in renameSpreadsheet()
. Es ist nur ein einziger Methodenaufruf erforderlich.
- Klicken Sie in Google Tabellen auf das Tabellenblatt
Sheet_Original
, um es zu aktivieren. - Ändern Sie in Apps Script die Funktion
duplicateAndOrganizeActiveSheet()
so, dass sie der folgenden entspricht:
function duplicateAndOrganizeActiveSheet() {
var mySS = SpreadsheetApp.getActiveSpreadsheet();
var duplicateSheet = mySS.duplicateActiveSheet();
// Change the name of the new sheet.
duplicateSheet.setName("Sheet_" + duplicateSheet.getSheetId());
}
- Speichern Sie die Funktion und führen Sie sie aus.
In Google Sheets wird ein dupliziertes Tabellenblatt erstellt und umbenannt, wenn Sie die Funktion ausführen:
Im hinzugefügten Code ändert die Methode setName(name)
den Namen von duplicateSheet
. Dazu wird getSheetID()
verwendet, um die eindeutige ID-Nummer des Tabellenblatts abzurufen. Der Operator +
hängt die Tabellenblatt-ID an das Ende des "Sheet_"
-Strings an.
Spalten und Zeilen eines Tabellenblatts ändern
Sie können auch die Klasse Sheet
verwenden, um das Tabellenblatt zu formatieren. Wir können beispielsweise Ihre duplicateAndOrganizeActiveSheet()
-Funktion so aktualisieren, dass auch die Spalten des duplizierten Tabellenblatts in der Größe angepasst und fixierte Zeilen hinzugefügt werden:
- Klicken Sie in Google Tabellen auf das Tabellenblatt
Sheet_Original
, um es zu aktivieren. - Ändern Sie in Apps Script die Funktion
duplicateAndOrganizeActiveSheet()
so, dass sie der folgenden entspricht:
function duplicateAndOrganizeActiveSheet() {
var mySS = SpreadsheetApp.getActiveSpreadsheet();
var duplicateSheet = mySS.duplicateActiveSheet();
// Change the name of the new sheet.
duplicateSheet.setName("Sheet_" + duplicateSheet.getSheetId());
// Format the new sheet.
duplicateSheet.autoResizeColumns(1, 5);
duplicateSheet.setFrozenRows(2);
}
- Speichern Sie die Funktion und führen Sie sie aus.
In Google Sheets wird ein doppeltes Tabellenblatt erstellt, umbenannt, aktiviert und formatiert:
Im hinzugefügten Code wird autoResizeColumns(startColumn, numColumns)
verwendet, um die Spalten des Tabellenblatts zur besseren Lesbarkeit anzupassen. Mit der Methode setFrozenRows(rows)
werden die angegebene Anzahl von Zeilen (in diesem Fall zwei) fixiert, sodass die Kopfzeilen sichtbar bleiben, wenn der Leser in der Tabelle nach unten scrollt.
Im nächsten Abschnitt erfahren Sie mehr über Bereiche und die grundlegende Datenbearbeitung.
6. Daten mit der Range-Klasse neu anordnen
Die Klasse Range
und ihre Methoden bieten die meisten Optionen zum Bearbeiten und Formatieren von Daten im Tabellenkalkulationsdienst.
In diesem Abschnitt wird die grundlegende Datenbearbeitung mit Bereichen vorgestellt. In diesen Übungen geht es darum, wie Sie Bereiche in Apps Script verwenden. In anderen Codelabs in dieser Playlist wird die Datenbearbeitung und ‑formatierung ausführlicher behandelt.
Bereiche verschieben
Sie können Datenbereiche mit Klassenmethoden und der A1-Notation aktivieren und verschieben. Die A1-Notation ist eine Kurzform zur Identifizierung bestimmter Zellgruppen in Tabellen. Wenn Sie sich noch einmal damit vertraut machen möchten, finden Sie hier eine Beschreibung der A1-Notation.
Aktualisieren Sie die duplicateAndOrganizeActiveSheet()
-Methode, um auch einige Daten zu verschieben:
- Klicken Sie in Google Tabellen auf das Tabellenblatt
Sheet_Original
, um es zu aktivieren. - Ändern Sie in Apps Script die Funktion
duplicateAndOrganizeActiveSheet()
so, dass sie der folgenden entspricht:
function duplicateAndOrganizeActiveSheet() {
var mySS = SpreadsheetApp.getActiveSpreadsheet();
var duplicateSheet = mySS.duplicateActiveSheet();
// Change the name of the new sheet.
duplicateSheet.setName("Sheet_" + duplicateSheet.getSheetId());
// Format the new sheet.
duplicateSheet.autoResizeColumns(1, 5);
duplicateSheet.setFrozenRows(2);
// Move column F to column C.
var myRange = duplicateSheet.getRange("F2:F");
myRange.moveTo(duplicateSheet.getRange("C2"));
}
- Speichern Sie die Funktion und führen Sie sie aus.
Wenn Sie diese Funktion ausführen, wird ein doppeltes Tabellenblatt erstellt, aktiviert und formatiert. Der Inhalt von Spalte F wird in Spalte C verschoben:
Im neuen Code wird die Methode getRange(a1Notation)
verwendet, um den zu verschiebenden Datenbereich zu ermitteln. Wenn Sie die A1-Notation „F2:F“ als Parameter der Methode eingeben, geben Sie Spalte F (ohne F1) an. Wenn der angegebene Bereich vorhanden ist, gibt die Methode getRange(a1Notation)
die zugehörige Range
-Instanz zurück. Der Code speichert die Instanz zur einfachen Verwendung in der Variablen myRange
.
Sobald der Bereich identifiziert wurde, werden mit der Methode moveTo(target)
die Inhalte von myRange
(sowohl die Werte als auch die Formatierung) verschoben. Das Ziel (Spalte C) wird mit der A1-Notation „C2“ angegeben. Es handelt sich um eine einzelne Zelle und nicht um eine Spalte. Beim Verschieben von Daten müssen Sie die Größen nicht an die Ziel- und Zielbereiche anpassen. In Apps Script wird einfach die erste Zelle jeder Spalte ausgerichtet.
Bereiche sortieren
Mit der Klasse Range
können Sie Gruppen von Zellen lesen, aktualisieren und organisieren. Sie können beispielsweise einen Datenbereich mit der Methode Range.sort(sortSpecObj)
sortieren:
- Klicken Sie in Google Tabellen auf das Tabellenblatt
Sheet_Original
, um es zu aktivieren. - Ändern Sie in Apps Script die Funktion
duplicateAndOrganizeActiveSheet()
so, dass sie der folgenden entspricht:
function duplicateAndOrganizeActiveSheet() {
var mySS = SpreadsheetApp.getActiveSpreadsheet();
var duplicateSheet = mySS.duplicateActiveSheet();
// Change the name of the new sheet.
duplicateSheet.setName("Sheet_" + duplicateSheet.getSheetId());
// Format the new sheet.
duplicateSheet.autoResizeColumns(1, 5);
duplicateSheet.setFrozenRows(2);
// Move column F to column C.
var myRange = duplicateSheet.getRange("F2:F");
myRange.moveTo(duplicateSheet.getRange("C2"));
// Sort all the data using column C (Price information).
myRange = duplicateSheet.getRange("A3:D55");
myRange.sort(3);
}
- Speichern Sie die Funktion und führen Sie sie aus.
Die Funktion sortiert nun zusätzlich zur bisherigen Formatierung alle Daten in der Tabelle anhand der Preisinformationen in Spalte C:
Im neuen Code wird getRange(a1Notation)
verwendet, um einen neuen Bereich für A3:D55 anzugeben (die gesamte Tabelle ohne die Spaltenüberschriften). Anschließend wird die Methode sort(sortSpecObj)
aufgerufen, um die Tabelle zu sortieren. Der Parameter sortSpecObj
ist die Spaltennummer, nach der sortiert werden soll. Mit dieser Methode wird der Bereich so sortiert, dass die angegebenen Spaltenwerte vom niedrigsten zum höchsten Wert (aufsteigende Werte) sortiert werden. Mit der Methode sort(sortSpecObj)
können komplexere Sortieranforderungen erfüllt werden, aber das ist hier nicht erforderlich. Alle Möglichkeiten zum Aufrufen von Sortierbereichen finden Sie in der Methodenreferenzdokumentation.
Herzlichen Glückwunsch! Sie haben alle Übungen in diesem Codelab erfolgreich abgeschlossen. Im nächsten Abschnitt werden die wichtigsten Punkte dieses Codelabs zusammengefasst und das nächste Codelab in dieser Playlist vorgestellt.
7. Fazit
Sie haben das Ende dieses Codelabs erreicht. Sie können jetzt die wichtigsten Klassen und Begriffe des Tabellendienstes in Apps Script verwenden und definieren.
Sie können jetzt mit dem nächsten Codelab fortfahren.
War dieses Codelab hilfreich?
Behandelte Themen
- So werden Tabellen, Blätter und Bereiche in Apps Script dargestellt.
- Einige grundlegende Anwendungsfälle der Klassen
SpreadsheetApp
,Spreadsheet
,Sheet
undRange
.
Nächste Schritte
Im nächsten Codelab in dieser Playlist wird genauer beschrieben, wie Sie Daten in einer Tabelle lesen, schreiben und ändern.
Das nächste Codelab finden Sie unter Mit Daten arbeiten.