Grundlagen von Apps Script mit Google Tabellen 2: Tabellen, Tabellen und Bereiche

1. Einführung

Willkommen zum zweiten Teil der Codelab-Playlist zu Grundlagen von Apps Script. Im vorherigen Codelab ging es um die Konzepte des Skripteditors, Makros und benutzerdefinierte Funktionen. In diesem Codelab geht es um den Tabellendienst, mit dem Sie Daten in Google Tabellen lesen, schreiben und bearbeiten können.

Lerninhalte

  • Wie Tabellen, Tabellen und Bereiche in Apps Script dargestellt werden
  • Mit der Klasse SpreadsheetApp und Spreadsheet können Sie auf die aktive (offene) Tabelle zugreifen, sie erstellen und umbenennen.
  • So ändern Sie den Namen eines Tabellenblatts und die Ausrichtung von Spalten und Zeilen mithilfe der Klasse Sheet.
  • Mit der Klasse Range eine Gruppe von Zellen oder einen Datenbereich festlegen, aktivieren, verschieben und sortieren.

Hinweis

Dies ist das zweite Codelab in der Playlist „Grundlagen von Apps Script mit Google Tabellen“. Bevor Sie beginnen, sollten Sie das erste Codelab abschließen: Makros und benutzerdefinierte Funktionen.

Voraussetzungen

  • Ein Verständnis der grundlegenden Apps Script-Themen, die im vorherigen Codelab dieser Playlist behandelt wurden.
  • Grundkenntnisse des Apps Script-Editors
  • Grundkenntnisse in Google Tabellen
  • Lesefunktion für Google Tabellen A1 Notation
  • Grundkenntnisse in JavaScript und der String-Klasse

Im nächsten Abschnitt werden die grundlegenden Tabellendienste vorgestellt.

2. Einführung in den Tabellendienst

Die vier Tabellen umfassen die Grundlage des Tabellendienstes: SpreadsheetApp, Spreadsheet, Sheet und Range. In diesem Abschnitt werden diese Kurse und ihre Verwendung beschrieben.

SpreadsheetApp-Klasse

Bevor Sie sich genauer mit Tabellen, Tabellen und Bereichen befassen, sollten Sie die übergeordnete Klasse SpreadsheetApp prüfen. Viele Skripts beginnen mit SpreadsheetApp-Methoden, da sie den anfänglichen Zugriffspunkt auf Ihre Google Tabellen-Dateien ermöglichen. Sie können sich SpreadsheetApp als Hauptklasse des Tabellendienstes vorstellen. Die SpreadsheetApp-Klasse wird hier nicht ausführlich erläutert. Weiter unten in diesem Codelab finden Sie jedoch Beispiele und Übungen, mit denen Sie den Kurs besser verstehen können.

Tabellen, Tabellen und ihre Kurse

Als Google Tabellen-Begriff ist eine Tabelle eine in Google Drive gespeicherte Google Tabellen-Datei, die Daten enthält, sortiert nach Zeilen und Spalten. Eine Tabelle wird manchmal als „Google-Tabelle“ bezeichnet. Dokumente werden so als „Google-Dokumente“ bezeichnet.

Mit der Klasse Spreadsheet können Sie auf Google Tabellen-Dateidaten zugreifen und sie ändern. Sie können diese Klasse auch für andere Vorgänge auf Dateiebene verwenden, z. B. um Mitbearbeiter hinzuzufügen.

f00cc1a9eb606f77

Ein Tabellenblatt** ist die Seite einer Tabelle. Diese wird manchmal auch als „Tab“ bezeichnet. Jede Tabelle kann ein oder mehrere Tabellenblätter enthalten. Mit der Klasse Sheet** können Sie auf Daten und Einstellungen auf Tabellenebene zugreifen und sie ändern, z. B. Zeilen oder Spalten verschieben.

39dbb10f83e3082

Zusammenfassung: Spreadsheet wird für Tabellen in Google Drive erstellt Die Klasse Sheet wird für einzelne Tabellenblätter einer Tabelle verwendet.

Die Range-Klasse

Bei den meisten Datenmanipulationen (z. B. Lesen, Schreiben oder Formatieren von Zellendaten) müssen Sie festlegen, für welche Zellen der Vorgang gilt. 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 nebeneinanderliegenden Zellen in einem Tabellenblatt. Sie können Bereiche anhand ihrer Zeilen- und Spaltennummern oder mit der A1-Notation angeben.

Im restlichen Codelab 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 einigen Daten. Wir haben eine für Sie bereitgestellt: Klicken Sie auf diesen Link, um die Datentabelle zu kopieren, und dann auf Kopie erstellen.

5376f721894b10d9

Eine Kopie der Beispieltabelle, die Sie verwenden können, wird im Google Drive-Ordner mit dem Namen „Copy of Unbenannte Tabelle“ abgelegt. Mithilfe dieser Tabelle können Sie die Übungen dieses Codelabs abschließen.

Zur Erinnerung: Klicken Sie auf Erweiterungen> Apps Script, um den Skripteditor in Google Tabellen zu öffnen.

Wenn Sie ein Apps Script-Projekt zum ersten Mal im Skripteditor öffnen, erstellt der Skripteditor ein Skriptprojekt und eine Skriptdatei für Sie.

Im nächsten Abschnitt erfahren Sie, wie Sie diese Tabelle mithilfe der Klasse Spreadsheet verbessern.

4. Auf Tabellen zugreifen und sie ändern

In diesem Abschnitt erfahren Sie, wie Sie die Klassen SpreadsheetApp und Spreadsheet verwenden, um auf Tabellen zuzugreifen und sie zu ändern. Mit den Übungen lernen Sie insbesondere, wie Sie eine Tabelle umbenennen und Tabellenblätter innerhalb einer Tabelle duplizieren.

Das sind zwar einfache Vorgänge, doch sie sind häufig Teil eines größeren, komplexeren Workflows. Wenn Sie verstehen, wie Sie diese Aufgaben mit Skriptcode automatisieren, können Sie einfacher erfahren, wie Sie komplexere Vorgänge automatisieren.

Aktive Tabelle umbenennen

Angenommen, Sie möchten den Standardnamen „Kopie der unbenannten Tabelle“ in einen Titel ändern, der besser zum Zweck Ihrer Tabelle passt. Das ist mit den Klassen SpreadsheetApp und Spreadsheet möglich.

  1. Ersetze im Skripteditor den Standardcodeblock myFunction() durch folgenden Code:
function renameSpreadsheet() {
  var mySS = SpreadsheetApp.getActiveSpreadsheet();
  mySS.rename("2017 Avocado Prices in Portland, Seattle");
}
  1. Klicken Sie auf „Speichern“ Speichern, um das Skript zu speichern.
  2. Klicken Sie zum Umbenennen Ihres Apps Script-Projekts auf Unbenanntes Projekt, geben Sie „Avocado-Preise“ als neuen Projektnamen ein und klicken Sie auf Umbenennen.
  3. Wählen Sie in der Funktionsliste renameSpreadsheet aus und klicken Sie auf Ausführen, um das Skript auszuführen.
  4. Autorisieren Sie das Makro gemäß der Anleitung auf dem Bildschirm. Wenn Sie die Nachricht „Diese App ist bestätigt“ erhalten, klicken Sie auf Erweitert und dann auf Zu Avocado-Preisen (unsicher). Klicken Sie auf dem nächsten Bildschirm auf Allow (Zulassen).

Sobald die Funktion ausgeführt wurde, sollte sich der Dateiname Ihrer Tabelle ändern:

226c7bc3c2fbf33e.PNG

Sehen wir uns den eingegebenen Code an. Die Methode getActiveSpreadsheet() gibt ein Objekt zurück, das die aktive Tabelle darstellt. Das ist die Kopie der von dir erstellten Trainingstabelle. Dieses Tabellenobjekt wird in der Variable mySS gespeichert. Mit dem Aufruf von rename(newName) für mySS wird der Name der Tabellendatei 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 sauberer und effizienter machen, indem Sie die Methode Spreadsheet in mySS aufrufen, anstatt getActiveSpreadsheet() wiederholt aufzurufen.

Aktives Tabellenblatt duplizieren

Die aktuelle Tabelle enthält nur ein Tabellenblatt. Sie können die Methode Spreadsheet.duplicateActiveSheet() aufrufen, um eine Kopie der Tabelle zu erstellen:

  1. 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();
}
  1. Speichern Sie das Skriptprojekt.
  2. Wählen Sie in der Funktionsliste duplicateAndOrganizeActiveSheet aus und klicken Sie auf Ausführen, um das Skript auszuführen.

Kehren Sie zu Google Tabellen zurück, um der Tabelle einen neuen „Tabellenblatt_Original“-Tab hinzuzufügen.

d24f9f4ae20bf7d4.gif

In dieser neuen Funktion wird die doppelte Tabelle in Ihrer Tabelle mithilfe der Methode duplicateActiveSheet() erstellt, aktiviert und zurückgegeben. Die resultierende Tabelle wird in duplicateSheet gespeichert, der Code funktioniert aber noch nicht mit dieser Variablen.

Im nächsten Abschnitt verwenden Sie die Klasse Sheet, um das doppelte Tabellenblatt umzubenennen und zu formatieren.

5. Tabelle mit der Google Tabellen-Klasse formatieren

Die Klasse Sheet bietet Methoden, mit denen sich Tabellenblätter lesen und aktualisieren lassen. In diesem Abschnitt erfahren Sie, wie Sie den Namen und die Spaltenbreite eines Tabellenblatts mit der Methode Sheet ändern.

Name des Tabellenblatts ändern

Das Umbenennen von Tabellenblättern ist so einfach wie das Umbenennen der Tabelle in renameSpreadsheet(). Es ist nur ein Aufruf einer Methode erforderlich.

  1. Klicken Sie in Google Tabellen auf das Tabellenblatt Sheet_Original, um es zu aktivieren.
  2. Ändern Sie in Apps Script die duplicateAndOrganizeActiveSheet()-Funktion so:
function duplicateAndOrganizeActiveSheet() {
  var mySS = SpreadsheetApp.getActiveSpreadsheet();
  var duplicateSheet = mySS.duplicateActiveSheet();

  // Change the name of the new sheet.
  duplicateSheet.setName("Sheet_" + duplicateSheet.getSheetId());
}
  1. Speichern und führen Sie die Funktion aus.

In Google Tabellen wird ein Duplikat erstellt und umbenannt, wenn Sie die Funktion ausführen:

91295f42354f62e7.gif

Im hinzugefügten Code ändert die setName(name)-Methode den Namen des duplicateSheet mithilfe von getSheetID(), um die eindeutige ID-Nummer des Tabellenblatts abzurufen. Der Operator + verkettet die Tabellenblatt-ID mit dem Ende des "Sheet_"-Strings.

Spalten und Zeilen eines Tabellenblatts ändern

Sie können die Tabelle auch mit der Klasse Sheet formatieren. Wir können beispielsweise die Funktion duplicateAndOrganizeActiveSheet() so anpassen, dass die Größe der Spalten des doppelten Tabellenblatts angepasst und eingefrorene Zeilen hinzugefügt werden:

  1. Klicken Sie in Google Tabellen auf das Tabellenblatt Sheet_Original, um es zu aktivieren.
  2. Ändern Sie in Apps Script die duplicateAndOrganizeActiveSheet()-Funktion so:
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);
}
  1. Speichern und führen Sie die Funktion aus.

In Google Tabellen wird ein Duplikat erstellt, umbenannt, aktiviert und formatiert:

2e57c917ab157dad.gif

Im hinzugefügten Code wird die Größe des Tabellenblatts mithilfe von autoResizeColumns(startColumn, numColumns) angepasst, um die Lesbarkeit zu verbessern. Bei der Methode setFrozenRows(rows) wird die angegebene Anzahl von Zeilen fixiert (in diesem Fall zwei). So bleiben die Kopfzeilen sichtbar, wenn der Leser in der Tabelle nach unten scrollt.

Im nächsten Abschnitt erfahren Sie mehr über Bereiche und grundlegende Datenbearbeitungen.

6. Daten mit der Range-Klasse neu anordnen

Die Klasse Range und ihre Methoden bieten die meisten Datenbearbeitungs- und Formatierungsoptionen im Tabellendienst.

In diesem Abschnitt wird die grundlegende Datenbearbeitung mit Bereichen vorgestellt. In diesen Übungen geht es darum, Bereiche in Apps Script zu nutzen, während andere Codelabs in dieser Playlist die Datenbearbeitung und -formatierung näher untersuchen.

Bereiche verschieben

Datenbereiche lassen sich mit Klassenmethoden und der A1-Notation aktivieren und verschieben. Das Tool ist eine Kurzform zur Identifizierung bestimmter Zellengruppen in Tabellen. Wenn Sie sich selbst noch einmal ins Gedächtnis rufen möchten, lesen Sie diese Beschreibung der A1-Notation.

Aktualisieren Sie die Methode duplicateAndOrganizeActiveSheet() so, dass auch einige Daten verschoben werden:

  1. Klicken Sie in Google Tabellen auf das Tabellenblatt Sheet_Original, um es zu aktivieren.
  2. Ändern Sie in Apps Script die duplicateAndOrganizeActiveSheet()-Funktion so:
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"));
}
  1. Speichern und führen Sie die Funktion aus.

Wenn Sie diese Funktion ausführen, wird ein Duplikat erstellt, aktiviert und formatiert. Der Inhalt von Spalte F wird in Spalte C verschoben:

10ea483aec52457e.gif

Der neue Code verwendet die Methode getRange(a1Notation), um den zu verschiebenden Datenbereich zu identifizieren. Wenn Sie die A1-Notation &Ft:F2:F als Parameter eingeben, definieren Sie die Spalte F (ohne F1). Wenn der angegebene Bereich vorhanden ist, gibt die Methode getRange(a1Notation) ihre Range-Instanz zurück. Der Code speichert die Instanz zur einfachen Verwendung in der Variable myRange.

Sobald der Bereich identifiziert wurde, verwendet die moveTo(target)-Methode den Inhalt von myRange (sowohl die Werte als auch die Formatierung) und verschiebt sie. Das Ziel (Spalte C) wird in A-Notation angegeben und gibt es in C2. Hierbei handelt es sich um eine einzelne Zelle, nicht um eine Spalte. Beim Verschieben von Daten müssen die Größen nicht mit dem Ziel- und Zielbereich übereinstimmen. Apps Script richtet einfach die erste Zelle jeweils aus.

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:

  1. Klicken Sie in Google Tabellen auf das Tabellenblatt Sheet_Original, um es zu aktivieren.
  2. Ändern Sie in Apps Script die duplicateAndOrganizeActiveSheet()-Funktion so:
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);
}
  1. Speichern und führen Sie die Funktion aus.

Jetzt sortiert die Funktion zusätzlich zu der vorherigen Formatierung alle Daten in der Tabelle anhand der Preisinformationen in Spalte C:

a6cc9710245fae8d

Der neue Code verwendet getRange(a1Notation), um einen neuen Bereich anzugeben, der A3:D55 abdeckt (die gesamte Tabelle ohne die Spaltenüberschriften). Der Code ruft dann die Methode sort(sortSpecObj) auf, um die Tabelle zu sortieren. Hier ist der Parameter sortSpecObj die Spaltennummer, nach der sortiert werden soll. Die Methode sortiert den Bereich so, dass die angegebenen Spaltenwerte vom niedrigsten zum höchsten Wert (aufsteigend) wechseln. Die Methode sort(sortSpecObj) kann komplexere Sortieranforderungen erfüllen, wird aber hier nicht benötigt. In der Dokumentation zu Methodenreferenzen können Sie sich die verschiedenen Möglichkeiten zum Aufrufen von Sortierbereichen ansehen.

Glückwunsch, du hast alle Übungen im Codelab abgeschlossen. Im nächsten Abschnitt werden die wichtigsten Punkte dieses Codelabs beschrieben und du kannst dir das nächste Codelab in dieser Playlist ansehen.

7. Fazit

Du hast das Ende dieses Codelabs erreicht. Sie können jetzt die wichtigen Klassen und Begriffe des Tabellendienstes in Apps Script verwenden und definieren.

Jetzt können Sie mit dem nächsten Codelab fortfahren.

War dieses Codelab hilfreich?

Ja Nein

Behandelte Themen

Weitere Informationen

Im nächsten Codelab in dieser Playlist erfährst du, wie du in einer Tabelle Daten lesen, schreiben und ändern kannst.

Das nächste Codelab finden Sie unter Mit Daten arbeiten.