Erweitern von Google Docs

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 grundlegende 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. Ein Skript kann auch an ein Dokument gebunden werden. Das Skript kann dadurch die Benutzeroberfläche verändern oder auf das Öffnen des Dokuments reagieren. Um ein containergebundenes Skript in Google Docs zu erstellen, klicken Sie auf Erweiterungen > Apps Script.

In beiden Fällen ist die Interaktion mit einem Google-Dokument über den Document Service von Apps Script ganz einfach, wie im folgenden Beispiel gezeigt.

function createDoc() {
  var doc = DocumentApp.create('Sample Document');
  var body = doc.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 Skript oben erstellt ein neues Dokument im Google Drive des Nutzers und fügt dann einen Absatz ein, der den gleichen Text wie der Dokumentname enthält, diesen Absatz als Überschrift formatiert und eine Tabelle basierend auf den Werten in einem zweidimensionalen Array anhängt. Genauso einfach kann das Skript diese Änderungen an einem vorhandenen Dokument vornehmen. Dazu ersetzt es den Aufruf von DocumentApp.create() durch DocumentApp.openById() oder openByUrl(). Verwenden Sie DocumentApp.getActiveDocument() für Skripts, die in einem Dokument erstellt wurden (containergebunden).

Struktur eines Dokuments

Aus Sicht von Apps Script ist ein Google-Dokument ähnlich wie ein HTML-Dokument aufgebaut. Das heißt, ein Google-Dokument besteht aus Elementen (z. B. Paragraph oder Table), die oft andere Elemente enthalten. Die meisten Skripts, die ein Google-Dokument ändern, beginnen mit einem Aufruf von getBody(), da Body ein Masterelement ist, das alle anderen Elemente mit Ausnahme von HeaderSection, FooterSection und Footnotes enthält.

Es gibt jedoch Regeln dazu, welche Elementtypen andere Typen enthalten können. Darüber hinaus kann der Document Service in Apps Script nur bestimmte Elementtypen einfügen. Die folgende Baumstruktur zeigt, welche Elemente von einem bestimmten Elementtyp enthalten sein können.

Fettgedruckte Elemente können eingefügt werden. Nicht fett dargestellte Elemente können nur an ihrer Stelle bearbeitet werden.

Text wird ersetzt

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 E-Mail-Zusammenführung bezeichnet.

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

Beide Funktionen verwenden die Methode getActiveDocument(), die nur für Skripts gilt, die in einem Google-Dokument erstellt wurden. Verwenden Sie in einem eigenständigen Skript stattdessen DocumentApp.create(), openById() oder openByUrl().

Platzhalter hinzufügen

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

Platzhalter ersetzen

function searchAndReplace() {
  var body = DocumentApp.getActiveDocument()
      .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 durch Hinzufügen von Menüs, Dialogfeldern und Seitenleisten anpassen. Ein Skript kann jedoch nur mit der UI für die aktuelle Instanz eines offenen Dokuments interagieren, und zwar nur dann, wenn es an das Dokument gebunden ist.

Hier erfahren Sie, wie Sie Ihren Google-Dokumenten benutzerdefinierte Menüs und Dialogfelder 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 Oberfläche als Teil eines Add-ons veröffentlichen möchten, folgen Sie dem Styleguide, um eine Übereinstimmung mit dem Stil und Layout des Google Docs-Editors zu gewährleisten.

Add-ons für Google Docs

Add-ons werden in Google Docs ausgeführt und können aus dem Add-on-Store von Google Docs installiert werden. Wenn Sie ein Skript für Google Docs entwickelt haben und es für alle Nutzer freigeben möchten, können Sie es mit Apps Script als Add-on publish, damit andere Nutzer es aus dem Add-on-Store installieren können.

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

Trigger

Skripts, die an ein Google-Dokument gebunden sind, können über einen einfachen Trigger auf das onOpen-Ereignis des Dokuments reagieren. Dieses tritt ein, wenn ein Nutzer mit Bearbeitungszugriff auf das Dokument es in Google Docs öffnet.

Schreiben Sie einfach eine Funktion namens onOpen(), um den Trigger einzurichten. Ein Beispiel für diesen Trigger finden Sie unter Benutzerdefinierte Menüs in Google Workspace. Der einfache Trigger ist zwar nützlich zum Hinzufügen von Menüs, er kann jedoch keine Apps Script-Dienste verwenden, für die eine Autorisierung erforderlich ist.