Struktur eines Google Docs-Dokuments

Um die Google Docs API effektiv nutzen zu können, müssen Sie die Architektur eines Google Docs-Dokuments und die Elemente, aus denen es besteht, sowie die Beziehung zwischen diesen beiden Elementen kennen. Auf dieser Seite finden Sie eine detaillierte Übersicht über diese Themen:

  • Ein konzeptionelles Modell der Dokumentelemente
  • Darstellung dieser Elemente durch die Docs API
  • Die Stileigenschaften der Elemente

Elemente der obersten Ebene

Das äußerste Containerelement in Google Docs ist ein Dokument. Dies ist die Einheit, die in Google Drive gespeichert, für andere Nutzer freigegeben und mit Text und Bildern aktualisiert werden kann.

Zu den Elementen der obersten Ebene einer documents-Ressource gehören Body, Header, Footer und mehrere weitere Attribute:

document: {
    body: ... ,
    documentStyle: ... ,
    lists: ... ,
    documentId: ... ,
    namedStyles: ... ,
    revisionId: ... ,
    title: ...
}

Wenn Sie globale Dokumentfunktionen außerhalb des Body-Inhalts bearbeiten möchten, ist es fast immer besser, eine oder mehrere Dokumentvorlagen zu verwenden, die Sie als Grundlage für die programmatische Erstellung neuer Dokumente verwenden können. Weitere Informationen finden Sie unter Text in einem Dokument zusammenführen.

Text

Body enthält normalerweise den vollständigen Dokumentinhalt. Die meisten Elemente, die Sie programmatisch verwenden können oder wahrscheinlich verwenden möchten, sind Elemente innerhalb des Body-Inhalts:

Struktur des Textinhalts.
Abbildung 1: Struktur des Textinhalts.

Strukturelement

Ein StructuralElement beschreibt Inhalte, die dem Dokument Struktur verleihen. Der Inhalt von Body ist eine Abfolge von StructuralElement-Objekten. Ein Inhaltselement personalisiert jedes StructuralElement-Objekt, wie im folgenden Diagramm dargestellt:

Strukturelle Elemente
Abbildung 2: Strukturelle Elemente

Strukturelemente und ihre Inhaltsobjekte enthalten alle visuellen Komponenten im Dokument. Dazu gehören der Text, Inline-Bilder und die Formatierung.

Absatzstruktur

Ein Paragraph ist eine StructuralElement, die einen Absatz darstellt. Sie umfasst einen Bereich von Inhalten, der mit einem Zeilenumbruchzeichen beendet wird. Es besteht aus den folgenden Objekten:

  • ParagraphElement: Beschreibt den Inhalt in einem Absatz.
  • ParagraphStyle: Ein optionales Element, mit dem explizit Stileigenschaften für den Absatz festgelegt werden.
  • Bullet: Wenn der Absatz Teil einer Liste ist, ein optionales Element, das die Aufzählungszeichenspezifikation bereitstellt.

Das ParagraphElement funktioniert in etwa wie ein StructuralElement. Mit einer Reihe von Inhaltselementtypen (z. B. ColumnBreak und Equation) wird der eigene ParagraphElement personalisiert, wie im folgenden Diagramm dargestellt:

Struktur der Absatzelemente.
Abbildung 3: Struktur der Absatzelemente.

Ein Beispiel für eine vollständige Dokumentstruktur findest du im Dokumentbeispiel im JSON-Format. In der Ausgabe sehen Sie viele der wichtigsten strukturellen und inhaltsbezogenen Elemente sowie die im folgenden Abschnitt beschriebene Verwendung von Start- und Endindexen.

Textausführungen

Ein TextRun ist ein ParagraphElement, der einen zusammenhängenden Textstring mit demselben Textstil darstellt. Ein Absatz kann mehrere Textdurchläufe enthalten, die jedoch niemals die Absatzgrenzen überschreiten. Der Inhalt wird nach einem Zeilenumbruchzeichen aufgeteilt, um separate Textläufe zu bilden. Betrachten Sie zum Beispiel ein kleines Dokument, das wie folgt aussieht:

Kleines Dokument mit Absätzen und Aufzählungsliste.
Abbildung 4: Ein kleines Dokument.

Das folgende Diagramm zeigt, wie Sie die Abfolge der Absätze im vorherigen Dokument mit jeweils eigenen Einstellungen für TextRun und Bullet visualisieren können.

Struktur einer Textausführung.
Abbildung 5: Struktur einer Textausführung.

AutoText

AutoText ist ein ParagraphElement, der einen Textplatz darstellt, der dynamisch durch Inhalte ersetzt wird, die sich im Laufe der Zeit ändern können. In Docs wird dies für Seitennummern verwendet.

Start- und Endindexe

Wenn Sie den Inhalt eines Dokuments aktualisieren, wird jede Aktualisierung an einer Stelle oder in einem Bereich innerhalb des Dokuments durchgeführt. Diese Positionen und Bereiche werden mithilfe von Indexen angegeben, die einen Offset innerhalb eines Segments dieses Dokuments darstellen. Ein Segment ist ein Textkörper, eine Kopfzeile, eine Fußzeile oder eine Fußnote, die Struktur- oder Inhaltselemente enthält. Die Indexe der Elemente in einem Segment beziehen sich auf den Anfang des Segments.

Die meisten Elemente im Textinhalt haben die nullbasierten Eigenschaften startIndex und endIndex. Sie geben den Versatz von Anfang und Ende eines Elements bezogen auf den Anfang des einschließenden Segments an. Weitere Informationen zum Bestellen Ihrer Docs API-Batchaufrufe finden Sie unter Batch-Updates.

Indexe werden in UTF-16-Codeeinheiten gemessen. Dies bedeutet, dass Ersatzwertpaare zwei Indexe verbrauchen. Das Emoji „Grinnendes Gesicht“ 👀 wird als \uD83D\uDE00 dargestellt und verbraucht zwei Indexe.

Bei Elementen innerhalb eines Dokumenttexts stellen Indexe Offsets vom Anfang des Textinhalts dar, der das „Stammelement“ ist.

Die Typen „Personalisieren“ von Strukturelementen – SectionBreak, TableOfContents, Table und Paragraph – haben diese Indexe nicht, da ihr einschließendes StructuralElement diese Felder enthält. Dies gilt auch für die Personalisierungstypen, die in einem ParagraphElement enthalten sind, z. B. TextRun, AutoText und PageBreak.

Auf Elemente zugreifen

Viele Elemente können mit der Methode documents.batchUpdate geändert werden. Beispielsweise können Sie mit InsertTextRequest den Inhalt jedes Elements ändern, das Text enthält. In ähnlicher Weise können Sie UpdateTextStyleRequest verwenden, um Formatierungen auf einen Textbereich anzuwenden, der in einem oder mehreren Elementen enthalten ist.

Verwenden Sie zum Lesen von Elementen des Dokuments die Methode documents.get, um einen JSON-Dump des vollständigen Dokuments abzurufen. Sie können die resultierende JSON-Datei dann parsen, um die Werte einzelner Elemente zu ermitteln. Weitere Informationen finden Sie unter Inhalt des Ausgabedokuments als JSON.

Das Parsen des Inhalts kann für verschiedene Anwendungsfälle von Vorteil sein. Nehmen wir als Beispiel eine Katalogisierungsanwendung, die gefundene Dokumente auflistet. Mit dieser Anwendung können der Titel, die Überarbeitungs-ID und die Startseitennummer eines Dokuments extrahiert werden, wie im folgenden Diagramm dargestellt:

Struktur eines Dokumentenkatalogs.
Abbildung 6: Struktur eines Dokumentenkatalogs.

Da es keine Methoden zum expliziten Lesen dieser Einstellungen gibt, muss Ihre Anwendung das gesamte Dokument abrufen und dann den JSON-Code parsen, um diese Werte zu extrahieren.

Übernahme aus Properties

Ein StructuralElement kann Eigenschaften von seinen übergeordneten Objekten übernehmen. Die Eigenschaften eines Objekts, einschließlich der definierter und übernommener Eigenschaften, bestimmen das endgültige visuelle Erscheinungsbild.

Die Formatierung von Textzeichen legt fest, wie Text in einem Dokument gerendert wird, z. B. fett, kursiv oder unterstrichen. Die von Ihnen angewendete Formatierung überschreibt die Standardformatierung, die vom TextStyle des zugrunde liegenden Absatzes übernommen wurde. Umgekehrt werden alle Zeichen, deren Formatierung Sie nicht festlegen, weiterhin von den Absatzstilen übernommen.

Mit der Absatzformatierung wird festgelegt, wie Textblöcke in einem Dokument gerendert werden, z. B. Ausrichtung, Rahmen und Einrückung. Die von Ihnen angewendete Formatierung überschreibt die Standardformatierung, die vom zugrunde liegenden ParagraphStyle übernommen wurde. Umgekehrt werden alle Formatierungsfunktionen, die Sie nicht festlegen, weiterhin vom Absatzstil übernommen.