Erweitern von Google Docs

Mit Google Apps Script können Sie Google-Dokumente und die Benutzeroberfläche mit neuen Menüs, Dialogfeldern und Seitenleisten.

Grundlagen

Apps Script kann auf zwei Arten mit Google Docs interagieren: Jedes Skript kann Ein Dokument erstellen oder ändern, wenn der Nutzer des Skripts über die entsprechenden Berechtigungen für und ein Skript kann auch gebunden an ein Dokument, wodurch das Skript spezielle Funktionen, um die Benutzeroberfläche zu ändern oder zu reagieren, wenn das Dokument geöffnet ist. 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 Docs-Dokument über Apps Script Document Service, wie im folgenden Beispiel. demonstriert wird.

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 Skript oben erstellt ein neues Dokument im Google Drive-Konto des Nutzers und ruft den Tab mit der ID t.0 (standardmäßiger erster Tab) ab und fügt einen Absatz ein. die denselben Text wie der Dokumentname enthält, diesen Absatz heading und hängt eine Tabelle basierend auf den Werten in einem zweidimensionalen Array an. Die diese Änderungen an einem bestehenden Dokument genauso leicht vornehmen, Der Aufruf von DocumentApp.create() wird ersetzt mit DocumentApp.openById() oder openByUrl(). Verwenden Sie für Skripts, die in einem Dokument erstellt wurden (containergebunden), DocumentApp.getActiveDocument() und Document.getActiveTab().

Struktur eines Dokuments

Aus der Sicht von Apps Script ist ein Google Docs-Dokument ähnlich wie ein HTML-Dokument, d. h., ein Dokument besteht aus mindestens Tab-Objekte, die jeweils Folgendes enthalten: (z. B. Paragraph- oder Table), die häufig andere Elemente enthalten Elemente. Die meisten Skripts, die ein Google Docs-Dokument ändern, beginnen mit einem Aufruf an getTab() und asDocumentTab() gefolgt von getBody(), da Body ein Kernelement ist, die alle anderen Elemente in einer Registerkarte enthält, mit Ausnahme des HeaderSection, FooterSection und alle Footnotes.

Es gibt jedoch Regeln dazu, welche Elementtypen andere Typen enthalten können. Darüber hinaus kann der Dokumentdienst in Apps Script nur von bestimmten Elementtypen in andere Elemente verschieben. Der Baum unten zeigt, -Elemente können von einem bestimmten Elementtyp enthalten sein.

Fettgedruckte Elemente können eingefügt werden. nicht fett formatierte Elemente manipuliert wurden.

Text wird ersetzt

Apps Script wird häufig verwendet, um Text in Google Docs zu ersetzen. Nehmen wir an, Sie haben eine Tabelle voller Kundeninformationen und Sie möchten ein personalisiertes Google Docs für jeden Kunden. (Diese Art von Vorgang wird oft als E-Mail- merge.)

Es gibt viele Möglichkeiten, Text zu ersetzen. Die einfachste ist die replaceText()-Methode wie im Beispiel unten dargestellt. replaceText unterstützt die meisten der JavaScript-Funktionen für reguläre Ausdrücke. Die erste Funktion unten fügt einem Google-Dokument mehrere Zeilen mit Platzhaltertext hinzu. in der realen Welt ist es wahrscheinlicher, dass Sie die Platzhalter selbst in das Dokument eingeben. Die werden die Platzhalter durch Eigenschaften ersetzt, die in den client-Objekt.

Beachten Sie, dass beide Funktionen die Methode getActiveDocument() und getActiveTab() -Methoden, die nur für Skripts gelten, die in einem Google Docs-Dokument erstellt wurden; in einem eigenständigen Skript erstellen, DocumentApp.create(), openById() oder openByUrl(), kombiniert 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-Dokumente anpassen, indem Sie Menüs, Dialogfelder und Seitenleisten. Ein Skript kann mit der Benutzeroberfläche jedoch nur die aktuelle Instanz eines geöffneten Dokuments und nur, wenn das Skript gebunden an das Dokument.

Benutzerdefinierte Menüs und Dialogfelder zu Ihren Google-Dokumenten. Weitere Informationen zum Erstellen benutzerdefinierter Oberflächen für ein Dialogfeld oder eine Seitenleiste finden Sie in der Leitfaden zum HTML-Dienst. Wenn Sie Ihre benutzerdefinierte Oberfläche als Teil eines Add-on folgen Sie der Styleguide für mehr Einheitlichkeit Stil und Layout des Google Docs-Editors.

Add-ons für Google Docs

Add-ons werden in Google Docs ausgeführt und können installiert werden. aus dem Add-on-Store für Google Docs. Wenn Sie ein Skript für Google Docs entwickelt haben und sie mit der Welt teilen möchten, können Sie mit Apps Script veröffentlichen des Skripts als , damit andere Nutzer es aus dem Add-on-Store installieren können.

Informationen zum Erstellen von Add-ons für Google Docs finden Sie unter Kurzanleitung zum Erstellen von Add-ons für Docs

Trigger

Skripts, die an ein Google-Konto gebunden sind Im Dokument kann ein einfacher Trigger verwendet werden, um zu antworten auf das onOpen-Ereignis des Dokuments, das wird jedes Mal angezeigt, wenn ein Nutzer mit Bearbeitungszugriff auf das Dokument es in Google Docs öffnet.

Schreiben Sie einfach eine Funktion namens onOpen(), um den Trigger einzurichten. Beispiel Weitere Informationen Obwohl der einfache Trigger zum Hinzufügen von Menüs nützlich ist, kann er keine Apps verwenden. Skriptdienste, die eine Autorisierung erfordern.