Google Docs erweitern

Mit Google Apps Script können Sie Google-Dokumente programmatisch erstellen und ändern sowie die Benutzeroberfläche mit neuen Menüs, Dialogfeldern und Seitenleisten anpassen.

Grundlagen

Apps Script kann auf zwei Arten mit Google Docs interagieren: Jedes Skript kann ein Dokument erstellen oder ändern, wenn der Nutzer des Skripts die entsprechenden Berechtigungen für das Dokument hat. Außerdem kann ein Skript an ein Dokument gebunden werden. Dadurch erhält das Skript besondere Möglichkeiten, die Benutzeroberfläche zu ändern oder zu reagieren, wenn das Dokument geöffnet wird. Wenn Sie ein containergebundenes Skript in Google Docs erstellen möchten, klicken Sie auf Erweiterungen > Apps Script.

In beiden Fällen können Sie mit einem Docs-Dokument interagieren, indem Sie den Document Service von Apps Script verwenden, wie im folgenden Beispiel gezeigt.

function createDoc() {
  var doc = DocumentApp.create('Sample Document');
  var documentTab = doc.getTab('t.0').asDocumentTab();
  var body = documentTab.getBody();
  var rowsData = [['Plants', 'Animals'], ['Ficus', 'Goat'], ['Basil', 'Cat'], ['Moss', 'Frog']];
  body.insertParagraph(0, doc.getName())
      .setHeading(DocumentApp.ParagraphHeading.HEADING1);
  table = body.appendTable(rowsData);
  table.getRow(0).editAsText().setBold(true);
}

Das vorherige Skript erstellt ein neues Dokument in Google Drive des Nutzers, ruft dann den Tab mit der ID t.0 (der standardmäßige erste Tab) ab, fügt einen Absatz mit demselben Text wie der Name des Dokuments ein, formatiert diesen Absatz als Überschrift und hängt eine Tabelle an, die auf den Werten in einem zweidimensionalen Array basiert. Das Skript könnte diese Änderungen auch an einem vorhandenen Dokument vornehmen, indem der Aufruf von DocumentApp.create durch DocumentApp.openById oder openByUrl ersetzt wird. Verwenden Sie für Skripts, die in einem Dokument (containergebunden) erstellt wurden, DocumentApp.getActiveDocument und Document.getActiveTab.

Struktur eines Dokuments

Aus der Sicht von Apps Script ist ein Docs-Dokument ähnlich wie ein HTML-Dokument aufgebaut. Ein Dokument besteht aus einem oder mehreren Tab-Objekten, die jeweils Elemente wie Paragraph oder Table enthalten, die oft weitere Elemente enthalten. Die meisten Skripts, mit denen ein Google-Dokument geändert wird, beginnen mit einem Aufruf von getTab und asDocumentTab, gefolgt von getBody, da Body ein Kernelement ist, das alle anderen Elemente auf einem Tab mit Ausnahme von HeaderSection, FooterSection und Footnotes enthält.

Es gibt jedoch Regeln dazu, welche Arten von Elementen andere Arten enthalten können. Außerdem können mit dem Document Service in Apps Script nur bestimmte Arten von Elementen in andere Elemente eingefügt werden. Im folgenden Baum sehen Sie, welche Elemente von einem bestimmten Elementtyp enthalten sein können.

Fett dargestellte Elemente können eingefügt werden. Nicht fett dargestellte Elemente können nur an Ort und Stelle bearbeitet werden.

Text ersetzen

Apps Script wird häufig verwendet, um Text in Google Docs zu ersetzen. Angenommen, Sie haben eine Tabelle mit Kundeninformationen und möchten für jeden Kunden ein personalisiertes Dokument erstellen. Diese Art von Vorgang wird oft als Serienbrief bezeichnet.

Mit der Methode replaceText können Sie Text ersetzen. Sie unterstützt die meisten Funktionen für reguläre Ausdrücke in JavaScript. Im folgenden Beispiel fügt die erste Funktion Platzhaltertext in das Dokument ein und die zweite ersetzt diesen Text durch Eigenschaften aus einem client-Objekt.

Für beide Funktionen werden die Methoden getActiveDocument und getActiveTab verwendet, die nur für Skripts gelten, die in einem Google Docs-Dokument erstellt wurden. Verwenden Sie in einem eigenständigen Skript stattdessen DocumentApp.create, openById oder openByUrl in Kombination mit Document.getTab.

Platzhalter hinzufügen

function createPlaceholders() {
  var body = DocumentApp.getActiveDocument().getActiveTab().asDocumentTab().getBody();
  body.appendParagraph('{name}');
  body.appendParagraph('{address}');
  body.appendParagraph('{city} {state} {zip}');
}

Platzhalter ersetzen

function searchAndReplace() {
  var body = DocumentApp.getActiveDocument().getActiveTab().asDocumentTab().getBody();
  var client = {
    name: 'Joe Script-Guru',
    address: '100 Script Rd',
    city: 'Scriptville',
    state: 'GA',
    zip: 94043
  };

  body.replaceText('{name}', client.name);
  body.replaceText('{address}', client.address);
  body.replaceText('{city}', client.city);
  body.replaceText('{state}', client.state);
  body.replaceText('{zip}', client.zip);
}

Benutzerdefinierte Menüs und Benutzeroberflächen

Sie können Google Docs anpassen, indem Sie benutzerdefinierte Menüs, Dialogfelder und Seitenleisten hinzufügen. Ein Skript kann nur mit der Benutzeroberfläche des Dokuments interagieren, an das es gebunden ist.

Weitere Informationen zum Erstellen benutzerdefinierter Oberflächen mit HTML und CSS Wenn Sie Ihre Benutzeroberfläche als Add-on veröffentlichen möchten, folgen Sie dem Styleguide, damit das Erscheinungsbild mit dem Docs-Editor übereinstimmt.

Add‑ons für Google Docs

Add-ons werden in Google Docs ausgeführt und können über den Add-on-Store für Google Docs installiert werden. Wenn Sie ein Skript für Google Docs entwickelt haben und es mit anderen teilen möchten, können Sie es mit Apps Script als Add-on veröffentlichen. Andere Nutzer können es dann über den Add-on-Shop installieren.

Informationen zum Erstellen eines Add-ons für Docs finden Sie in der Kurzanleitung zum Erstellen von Docs-Add-ons.

Trigger

Skripts, die an ein Google-Dokument gebunden sind, können einen einfachen Trigger verwenden, um auf das onOpen-Ereignis des Dokuments zu reagieren. Dieses Ereignis tritt immer dann auf, wenn ein Nutzer, der Bearbeitungszugriff auf das Dokument hat, es in Google Docs öffnet.

Schreiben Sie eine Funktion mit dem Namen onOpen, um den Trigger einzurichten. Ein Beispiel für diesen Trigger finden Sie unter Benutzerdefinierte Menüs in Google Workspace. Der Trigger ist zwar nützlich, um Menüs hinzuzufügen, kann aber keine Apps Script-Dienste verwenden, für die eine Autorisierung erforderlich ist.