Google Tabellen erweitern

Google Apps Script zum Erweitern von Google Sheets verwenden Benutzerdefinierte Menüs, Dialogfelder und Seitenleisten zu Google Sheets hinzufügen Benutzerdefinierte Funktionen für Google Sheets schreiben und in andere Google-Dienste wie Google Kalender, Google Drive und Gmail einbinden

Die meisten Skripts für Google Sheets bearbeiten Arrays, um mit den Zellen, Zeilen und Spalten in einer Tabelle zu interagieren. Wenn Sie sich mit Arrays in JavaScript nicht auskennen, bietet Codecademy ein hervorragendes Schulungsmodul für Arrays. Dieser Kurs wurde nicht von Google entwickelt und steht in keiner Verbindung zu Google.

Eine kurze Einführung in die Verwendung von Apps Script mit Google Sheets finden Sie in der Kurzanleitung für Makros, Menüs und benutzerdefinierte Funktionen.

Jetzt starten

Apps Script enthält spezielle APIs, mit denen Sie Google Sheets programmatisch erstellen, lesen und bearbeiten können. Apps Script interagiert auf zwei Arten mit Google Sheets: Jedes Skript kann eine Tabelle erstellen oder ändern, wenn der Nutzer des Skripts die entsprechenden Berechtigungen dafür hat. Außerdem kann ein Skript auch an eine Tabelle gebunden werden. Gebundene Skripts haben spezielle Möglichkeiten, die Benutzeroberfläche zu ändern oder zu reagieren, wenn die Tabelle geöffnet wird. Wenn Sie ein gebundenes Skript erstellen möchten, wählen Sie in Google Sheets Erweiterungen > Apps Script aus.

Der Tabellendienst behandelt Google Sheets als Raster und arbeitet mit zweidimensionalen Arrays. Wenn Sie Daten aus der Tabelle abrufen möchten, müssen Sie auf die Tabelle zugreifen, in der die Daten gespeichert sind, den Bereich abrufen, der die Daten enthält, und dann die Werte der Zellen abrufen. Apps Script erleichtert den Datenzugriff, indem es strukturierte Daten in der Tabelle liest und JavaScript-Objekte dafür erstellt.

Daten lesen

Angenommen, Sie haben eine Liste mit Produktnamen und Produktnummern, die Sie in einer Tabelle speichern, wie in der folgenden Abbildung gezeigt.

Im folgenden Beispiel wird gezeigt, wie Sie die Produktnamen und Produktnummern abrufen und protokollieren.

function logProductInfo() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const data = sheet.getDataRange().getValues();
  for (let i = 0; i < data.length; i++) {
    Logger.log('Product name: ' + data[i][0]);
    Logger.log('Product number: ' + data[i][1]);
  }
}

Logs ansehen

Wenn Sie die protokollierten Daten ansehen möchten, klicken Sie oben im Skripteditor auf Ausführungsprotokoll.

Daten schreiben

Wenn Sie Daten wie einen neuen Produktnamen und eine neue Produktnummer in der Tabelle speichern möchten, fügen Sie am Ende des Skripts den folgenden Code hinzu.

function addProduct() {
  const sheet = SpreadsheetApp.getActiveSheet();
  sheet.appendRow(['Cotton Sweatshirt XL', 'css004']);
}

Mit dem vorherigen Code wird unten in der Tabelle eine neue Zeile mit den angegebenen Werten angehängt. Wenn Sie diese Funktion ausführen, wird der Tabelle eine neue Zeile hinzugefügt.

Benutzerdefinierte Menüs und Benutzeroberflächen

Sie können Google Sheets anpassen, indem Sie benutzerdefinierte Menüs, Dialogfelder und Seitenleisten hinzufügen. Die Grundlagen zum Erstellen von Menüs finden Sie im Leitfaden zu Menüs. Informationen zum Anpassen des Inhalts eines Dialogfelds, siehe den Leitfaden zum HTML-Dienst.

Sie können eine Skriptfunktion an ein Bild oder eine Zeichnung in einer Tabelle anhängen. Die Funktion wird ausgeführt, wenn ein Nutzer auf das Bild oder die Zeichnung klickt. Weitere Informationen finden Sie unter Bilder und Zeichnungen in Google Sheets.

Wenn Sie Ihre benutzerdefinierte Benutzeroberfläche als Teil eines Add-ons veröffentlichen möchten, folgen Sie dem Styleguide, um die Konsistenz mit dem Stil und Layout des Google Sheets-Editors zu gewährleisten.

Mit Google Formulare verbinden

Sie können Google Formulare über die Dienste „Formulare“ und „Tabellen“ mit Google Sheets verbinden. Mit dieser Funktion wird automatisch ein Google-Formular auf Grundlage der Daten in einer Tabelle erstellt. Mit Apps Script können Sie auch Trigger verwenden, wie z. B. onFormSubmit, um eine bestimmte Aktion auszuführen, nachdem ein Nutzer auf das Formular geantwortet hat. Weitere Informationen zum Verbinden von Google Sheets mit Google Formulare finden Sie in der Kurzanleitung zum Verwalten von Antworten für Google Formulare (5 Minuten) .

Daten formatieren

Die Range Klasse enthält Methoden wie setBackground mit denen Sie das Format einer Zelle oder eines Zellenbereichs aufrufen und ändern können. Im folgenden Beispiel wird der Schriftstil eines Bereichs festgelegt:

function formatMySpreadsheet() {
  // Set the font style of the cells in the range of B2:C2 to be italic.
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheets()[0];
  const cell = sheet.getRange('B2:C2');
  cell.setFontStyle('italic');
}

Datenvalidierung

Sie können auf vorhandene Datenvalidierungsregeln in Google Sheets zugreifen oder neue Regeln erstellen. Im folgenden Beispiel wird gezeigt, wie Sie eine Datenvalidierungsregel festlegen, die nur Zahlen zwischen 1 und 100 in einer Zelle zulässt.

function validateMySpreadsheet() {
  // Set a rule for the cell B4 to be a number between 1 and 100.
  const cell = SpreadsheetApp.getActive().getRange('B4');
  const rule = SpreadsheetApp.newDataValidation()
     .requireNumberBetween(1, 100)
     .setAllowInvalid(false)
     .setHelpText('Number must be between 1 and 100.')
     .build();
  cell.setDataValidation(rule);
}

Weitere Informationen zum Arbeiten mit Datenvalidierungsregeln finden Sie unter SpreadsheetApp.newDataValidation, DataValidationBuilder, und Range.setDataValidation

Diagramme

Sie können Diagramme in eine Tabelle einbetten, die die Daten in einem bestimmten Bereich darstellen. Im folgenden Beispiel wird ein eingebettetes Balkendiagramm generiert, vorausgesetzt, Sie haben diagrammfähige Daten in den Zellen A1:B15:

function newChart() {
  // Generate a chart representing the data in the range of A1:B15.
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheets()[0];

  const chart = sheet.newChart()
     .setChartType(Charts.ChartType.BAR)
     .addRange(sheet.getRange('A1:B15'))
     .setPosition(5, 5, 0, 0)
     .build();

  sheet.insertChart(chart);
}

Weitere Informationen zum Einbetten eines Diagramms in Ihre Tabelle finden Sie unter EmbeddedChart und bestimmten Diagramm erstellern wie EmbeddedPieChartBuilder.

Benutzerdefinierte Funktionen in Google Sheets

Eine benutzerdefinierte Funktion ähnelt einer integrierten Tabellen funktion wie =SUM(A1:A5), mit dem Unterschied, dass Sie das Verhalten der Funktion mit Apps Script definieren. Sie können beispielsweise eine benutzerdefinierte Funktion in2mm() erstellen, die einen Wert von Zoll in Millimeter umwandelt. Anschließend können Sie die Formel in Ihrer Tabelle verwenden, indem Sie =in2mm(A1) oder =in2mm(10) in eine Zelle eingeben.

Weitere Informationen zu benutzerdefinierten Funktionen finden Sie in der Kurzanleitung für Menüs und benutzerdefinierte Funktionen oder im ausführlicheren Leitfaden zu benutzerdefinierten Funktionen.

Makros

Makros sind eine weitere Möglichkeit, Apps Script-Code über die Google Sheets-Benutzeroberfläche auszuführen. Im Gegensatz zu benutzerdefinierten Funktionen werden sie mit einer Tastenkombination oder über das Google Sheets-Menü aktiviert. Weitere Informationen finden Sie unter Makros in Google Sheets.

Add-ons für Google Sheets

Add-ons sind speziell verpackte Apps Script-Projekte, die in Google Sheets ausgeführt werden und über den Google Sheets-Add-on-Store installiert werden können. Wenn Sie ein Skript für Google Sheets entwickelt und freigeben möchten, können Sie es mit Apps Script als Add-on veröffentlichen, damit andere Nutzer es installieren können.

Leistung und Skalierung

Wenn Ihre Datensätze größer werden, können Leistungsprobleme auftreten. So optimieren Sie Ihre Tabelle und Skripts:

  • Best Practices befolgen: Lesen Sie den Leitfaden Best Practices für Tipps zum Minimieren von Dienstaufrufen und zur Verwendung von Batchvorgängen.
  • Formeln optimieren: Wenn Ihre Tabelle aufgrund komplexer Formeln (z. B. VLOOKUP, ARRAYFORMULA, oder IMPORTRANGE) langsam ist, können Sie diese Berechnungen mit Apps Script im Arbeitsspeicher ausführen und die Ergebnisse in Batches zurückschreiben.
  • Datenbankalternativen in Betracht ziehen: Bei sehr großen Datensätzen (fast 10 Millionen Zellen) oder häufiger Dateneingabe (z.B. viele verbundene Formulare) sollten Sie Google Cloud SQL mit JDBC oder BigQuery verwenden.

Trigger

Skripts, die an eine Google Sheets-Datei gebunden sind, können einfache Trigger wie die Funktionen `onOpen()` und `onEdit()` verwenden, um automatisch zu reagieren, wenn ein Nutzer mit Bearbeitungszugriff auf die Tabelle diese öffnet oder bearbeitet.onOpen()onEdit() Wie bei einfachen Triggern kann Google Sheets mit installierbaren Triggern automatisch eine Funktion ausführen, wenn ein bestimmtes Ereignis eintritt. Installierbare Trigger sind jedoch flexibler als einfache Trigger und unterstützen die folgenden Ereignisse: Öffnen, Bearbeiten, Ändern, Formular senden und zeitgesteuert (Uhr).