Mit Google Apps Script können Sie Google Docs programmgesteuert 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 ändern oder auf das Öffnen des Dokuments reagieren. 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. Ein Dokument besteht also aus einem oder mehreren Tab
-Objekten, von denen jedes Elemente wie Paragraph
oder Table
enthält, die oft 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 in einem Tab enthält, mit Ausnahme von HeaderSection
, FooterSection
und Footnotes
{/20.
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. Die folgende Baumstruktur zeigt, welche Elemente von einem bestimmten Elementtyp enthalten sein können.
Fett formatierte Elemente können eingefügt werden, nicht fett formatierte Elemente können nur an ihrer Position bearbeitet werden.
- Dokument
- Tab
- DocumentTab
- Textkörper
- HeaderSection
- ListItem
- HorizontalRule
- InlineDrawing
- InlineImage
- Text
- UnsupportedElement (Seitennummer usw.)
- Absatz
- HorizontalRule
- InlineDrawing
- InlineImage
- Text
- UnsupportedElement (Seitennummer usw.)
- Tabelle
- ListItem
- FooterSection
- ListItem
- HorizontalRule
- InlineDrawing
- InlineImage
- Text
- UnsupportedElement (Seitennummer usw.)
- Absatz
- HorizontalRule
- InlineDrawing
- InlineImage
- Text
- UnsupportedElement (Seitennummer usw.)
- Tabelle
- ListItem
- FootnoteSection
- DocumentTab
- Tab
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. 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. In der zweiten Funktion werden die Platzhalter durch im client
-Objekt definierte Eigenschaften ersetzt.
Beide Funktionen verwenden die Methoden getActiveDocument()
und getActiveTab()
, 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. 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 Oberfläche als Teil eines Add-ons veröffentlichen möchten, folgen Sie dem Styleguide, um eine Einheitlichkeit 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 veröffentlichen, 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
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.
Um den Trigger einzurichten, 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.