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 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 ist es einfach, über den Document Service 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); }

Mit dem oben stehenden Skript wird ein neues Dokument im Google Drive des Nutzers erstellt. Anschließend wird der Tab mit der ID t.0 (der erste Tab) abgerufen, ein Absatz mit demselben Text wie der Name des Dokuments eingefügt, dieser Absatz als Überschrift formatiert und eine Tabelle basierend auf den Werten in einem zweidimensionalen Array angehängt. Das Script könnte diese Änderungen genauso einfach 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 Apps Script-Sicht ist ein Google 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 wiederum andere Elemente enthalten. Die meisten Skripts, 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 mit Ausnahme von HeaderSection, FooterSection und allen 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 Google-Dokument erstellen. Diese Art von Vorgang wird oft als Serienbrief bezeichnet.

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

Beachten Sie, dass für beide Funktionen die Methoden getActiveDocument() und getActiveTab() verwendet werden, 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 Menüs, Dialogfelder und Seitenleisten hinzufügen. Ein Skript kann jedoch nur mit der Benutzeroberfläche der aktuellen Instanz eines geöffneten Dokuments interagieren und nur, wenn das Skript an das Dokument gebunden ist.

Benutzerdefinierte Menüs und Dialogfelder in Google Docs hinzufügen Weitere Informationen zum Erstellen benutzerdefinierter Oberflächen für ein Dialogfeld oder eine Seitenleiste finden Sie im Leitfaden zum HTML-Dienst. 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 Docs-Editors zu wahren.

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. Andere Nutzer können es dann aus dem Add-on-Store installieren.

Eine Anleitung zum Erstellen eines Add-ons für Google 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.

Um den Trigger einzurichten, schreiben Sie einfach eine Funktion mit dem Namen 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, kann aber keine Apps Script-Dienste verwenden, für die eine Autorisierung erforderlich ist.