Erweitern von Google Docs

Mit Google Apps Script können Sie Google-Dokumente programmgesteuert 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 Script kann ein Dokument erstellen oder ändern, wenn der Nutzer des Scripts die entsprechenden Berechtigungen für das Dokument hat. Ein Script kann auch an ein Dokument gebunden werden, wodurch es spezielle Funktionen erhält, um die Benutzeroberfläche zu ändern oder zu reagieren, wenn das Dokument geöffnet wird. Wenn Sie ein containergebundenes Script in Google Docs erstellen möchten, klicken Sie auf Erweiterungen > Apps Script.

In beiden Fällen ist es ganz einfach, über den Dokumentdienst von Apps Script mit einem Google Docs-Dokument zu interagieren, wie das folgende Beispiel zeigt.

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 obige Script erstellt ein neues Dokument in Google Drive des Nutzers, ruft dann den Tab mit der ID t.0 (der standardmäßig erste Tab) ab, fügt einen Absatz ein, der denselben Text wie der Name des Dokuments enthält, formatiert diesen Absatz als Überschrift und hängt eine Tabelle an, die auf den Werten in einem zweidimensionalen Array basiert. Das Script könnte diese Änderungen genauso gut an einem vorhandenen Dokument vornehmen, indem der Aufruf von DocumentApp.create() durch DocumentApp.openById() oder openByUrl() ersetzt wird. Für Scripts, die in einem Dokument erstellt wurden (containergebunden), verwenden Sie DocumentApp.getActiveDocument() und Document.getActiveTab().

Struktur eines Dokuments

Aus Sicht von Apps Script ist ein Google Docs-Dokument ähnlich wie ein HTML-Dokument strukturiert. Das heißt, ein Dokument besteht aus einem oder mehreren Tab-Objekten, die jeweils Elemente enthalten (z. B. Paragraph oder Table), die oft andere Elemente enthalten. Die meisten Scripts, die ein Google Docs-Dokument ändern, beginnen mit einem Aufruf von getTab() und asDocumentTab(), gefolgt von getBody(), da Body ein Kernelement ist, das alle anderen Elemente auf einem Tab enthält, mit Ausnahme von HeaderSection, FooterSection und beliebigen Footnotes.

Es gibt jedoch Regeln dafür, welche Elementtypen andere enthalten können. Außerdem kann der Dokumentdienst in Apps Script nur bestimmte Arten von Elementen in andere Elemente einfügen. Im folgenden Baum wird dargestellt, welche Elemente von einem bestimmten Elementtyp enthalten werden können.

Fett formatierte Elemente können eingefügt werden, nicht fett formatierte Elemente können nur an ihrer Position 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 Google Docs-Dokument erstellen. Dieser Vorgang wird oft als Zusammenführen von E-Mails bezeichnet.

Es gibt viele Möglichkeiten, Text zu ersetzen. Die einfachste ist die Methode replaceText(), die im folgenden Beispiel gezeigt wird. replaceText unterstützt die meisten Funktionen für reguläre Ausdrücke von JavaScript. Die erste Funktion unten fügt einem Google Docs-Dokument mehrere Zeilen Platzhaltertext hinzu. In der Praxis würden Sie die Platzhalter wahrscheinlich selbst in das Dokument eingeben. In der zweiten Funktion werden die Platzhalter durch im client-Objekt definierte Attribute ersetzt.

Beachten Sie, dass für beide Funktionen die Methoden getActiveDocument() und getActiveTab() verwendet werden, die nur für Scripts gelten, die in einem Google Docs-Dokument erstellt wurden. Verwenden Sie in einem eigenständigen Script 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 Menüs, Dialogfelder und Seitenleisten hinzufügen. Beachten Sie jedoch, dass ein Script nur mit der Benutzeroberfläche der aktuellen Instanz eines geöffneten Dokuments interagieren kann und nur, wenn das Script an das Dokument gebunden ist.

Informationen zum Hinzufügen benutzerdefinierter Menüs und Dialogfelder in Google Docs Weitere Informationen zum Erstellen benutzerdefinierter Benutzeroberflächen für ein Dialogfeld oder eine Seitenleiste finden Sie im Leitfaden für den HTML-Dienst. Wenn Sie Ihre benutzerdefinierte Benutzeroberfläche als Teil eines Add-ons veröffentlichen möchten, halten Sie sich an den Styleguide, damit sie dem Stil und Layout des Google Docs-Editors entspricht.

Add-ons für Google Docs

Add-ons werden in Google Docs ausgeführt und können über den Google Docs-Add-on-Store installiert werden. Wenn Sie ein Script 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, damit andere Nutzer es über den Add-on-Shop installieren können.

Eine Anleitung zum Erstellen eines Add-ons für Google Docs finden Sie im Hilfeartikel Einstieg in die Erstellung von Docs-Add-ons.

Trigger

Scripts, die an ein Google-Dokument gebunden sind, können mit einem einfachen Trigger auf das onOpen-Ereignis des Dokuments reagieren, das auftritt, wenn ein Nutzer mit Bearbeitungszugriff auf das Dokument es in Google Docs öffnet.

Zum Einrichten des Triggers schreiben Sie einfach eine Funktion namens onOpen(). Ein Beispiel für diesen Trigger finden Sie unter Benutzerdefinierte Menüs in Google Workspace. Der einfache Trigger ist zwar nützlich, um Menüs hinzuzufügen, aber er kann keine Apps Script-Dienste verwenden, für die eine Autorisierung erforderlich ist.