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 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. Dadurch hat das Skript besondere Möglichkeiten, die Benutzeroberfläche zu ändern oder zu reagieren, wenn das Dokument geöffnet wird. Klicken Sie zum Erstellen eines containergebundenen Skripts in Google Docs 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 wird.

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);
}

Mit dem Skript oben wird ein neues Dokument im Google Drive-Konto des Nutzers erstellt. Dann wird ein Absatz eingefügt, der denselben Text wie der Dokumentname enthält. Der Absatz wird als Überschrift formatiert und eine Tabelle wird basierend auf den Werten in einem zweidimensionalen Array angefügt. Das Skript 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 DocumentApp.getActiveDocument() für Skripts, die in einem Dokument erstellt werden (containergebunden).

Struktur eines Dokuments

Aus Apps Script ist ein Google-Dokument ähnlich wie ein HTML-Dokument strukturiert. Es besteht also aus Elementen wie 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 außer 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 Typen von Elementen einfügen. Die folgende Struktur zeigt, welche Elemente in einem bestimmten Elementtyp enthalten sein können.

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

Text wird ersetzt

Apps Script wird oft 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 generieren. (Diese Art von Vorgang wird oft als Zusammenstellung von E-Mail-Inhalten bezeichnet.)

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

Bei beiden Funktionen wird die Methode getActiveDocument() verwendet, die nur für Skripts gilt, die in einem Google-Dokument erstellt werden. In einem eigenständigen Skript verwenden Sie 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 anpassen, indem Sie Menüs, Dialogfelder und Seitenleisten hinzufügen. Ein Skript kann jedoch nur mit der UI der aktuellen Instanz eines geöffneten Dokuments interagieren und auch nur dann, wenn das Skript an das Dokument gebunden ist.

Google-Dokumente 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 die benutzerdefinierte Oberfläche als Teil eines Add-ons veröffentlichen möchten, beachten Sie die Hinweise im Styleguide, um sie an den Stil und das Layout des Google Docs-Editors anzupassen.

Add-ons für Google Docs

Add-ons werden in Google Docs ausgeführt und können aus dem Add-on-Store für Google Docs installiert werden. Wenn Sie ein Skript für Google Docs entwickelt haben und es mit der ganzen Welt teilen 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 zum Erstellen von Add-ons für Google Docs.

Trigger

Skripts, die an ein Google-Dokument gebunden sind, können einen einfachen Trigger verwenden, um auf das Ereignis onOpen des Dokuments zu reagieren. Dieses Ereignis tritt ein, wenn ein Nutzer mit Bearbeitungszugriff das Dokument 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 hilfreich, um Menüs hinzuzufügen, er kann aber keine Apps Script-Dienste verwenden, für die eine Autorisierung erforderlich ist.