Google ドキュメント ドキュメントの構造

Google Docs API を効果的に使用するには、 Google ドキュメントのドキュメントのアーキテクチャと、 エンティティ間の関係を定義しますこのページでは 以下のトピックについて詳しく説明します。

  • ドキュメント要素の概念モデル
  • Docs API によるこれらの要素の表現方法
  • 要素のスタイル設定プロパティ
で確認できます。

トップレベル要素

Google ドキュメントで一番外側のコンテナ要素はドキュメントです。これが Google ドライブへの保存、他のユーザーとの共有、更新が可能な テキストと画像でトレーニングできます

documents の最上位要素 リソースには、その TabSuggestionsViewMode, その他の属性:

document: {
    title: ... ,
    revisionId: ... ,
    documentId: ... ,
    suggestionsViewMode: ... ,
    tabs: ...
}

タブ

1 つのドキュメントに複数のタブを含めることができ、 異なるテキストレベルのコンテンツがあります。ドキュメントの tabs プロパティは、 Tab オブジェクトのシーケンスです。Tab は次のフィールドで構成されます。

  • TabProperties: ID、タイトル、インデックスなどのタブの属性が含まれます。
  • childTabs: タブの子タブ(直接ネストされているタブ)を公開します。 。
  • DocumentTab: タブのテキスト コンテンツを表します。
で確認できます。
ドキュメントのタブの構造。
図 1.ドキュメントのタブの構造。

以降のセクションでは、ドキュメントのタブ階層の概要を説明します。 タブの JSON 表現も より詳細な情報を提供しますタブを操作するをご覧ください。 タブ機能の詳細をご覧ください

Body のコンテンツの外部でドキュメント タブのグローバル機能を操作するには、次のようにします。 通常は 1 つ以上のドキュメント テンプレートを使用することをおすすめします。テンプレートは 新しいドキュメントをプログラムで生成するための基礎となります。詳細については、次をご覧ください: テキストをドキュメントに結合する

本文のコンテンツ

Body には通常、ドキュメントのタブのすべてのコンテンツが含まれます。ほとんどの 使用できる、または使用する可能性が高いアイテムは、 Body のコンテンツ:

本文コンテンツの構造。
図 2. 本文コンテンツの構造。

構造要素

StructuralElement は、ドキュメントに構造を提供するコンテンツを記述します。Body の内容 StructuralElement オブジェクトのシーケンス。コンテンツ要素は 1 つの StructuralElement オブジェクトを使用します。

構造要素。
図 3. 構造要素。

構造要素とそのコンテンツ オブジェクトには、すべての視覚コンポーネントが含まれる ドキュメント内に表示されます。これには、テキスト、インライン画像、書式設定が含まれます。

段落の構造

Paragraph とは、 段落を表す StructuralElement。非常に幅広いコンテンツから 改行文字で終了します。次のオブジェクトで構成されます。

  • ParagraphElement: 段落内のコンテンツについて説明します。
  • ParagraphStyle: 段落のスタイル プロパティを明示的に設定する省略可能な要素です。
  • Bullet: その段落が はリストの一部であり、箇条書きの項目は省略可能 仕様。

ParagraphElementStructuralElement のように機能します。一連の コンテンツ要素タイプ( ColumnBreakEquation)は、 ParagraphElement を使用します。

段落要素の構造。
図 4. 段落要素の構造。

完全なドキュメント構造の例については、こちらのドキュメント JSON 形式で表します。出力では、 主な構造およびコンテンツ要素の多くと インデックスと終了インデックスの 2 つのプロパティがあります。

テキストの実行

TextRun とは、 ParagraphElement これは、同じテキスト スタイルを持つ連続した文字列を表します。 段落には複数のテキストランを含めることができますが、テキストランが段落をまたぐことはありません。 できます。コンテンツは改行文字の後ろで分割され、別々のテキストになります。 実行されますたとえば、次のような小さなドキュメントについて考えてみましょう。

段落と箇条書きを含む小さなドキュメント。
図 5. 小さなドキュメントです。

次の図は、段落の順序を可視化する方法を示したものです。 。それぞれ独自の TextRun とオプションの Bullet があります。 設定。

テキスト実行の構造。
図 6. テキスト実行の構造。

AutoText

AutoText: 動的に置換されるテキスト内の場所を表す ParagraphElement コンテンツのインデックスに 注力できるようにしていますドキュメントでは 表示されます。

開始インデックスと終了インデックス

ドキュメントのタブのコンテンツを更新すると、 ドキュメント内の特定の位置や範囲内に配置できます。これらの場所と 範囲は、インデックスを使用して指定します。これは、 ドキュメント segment を含む。セグメントとは、本文、ヘッダー、フッター、 構造要素またはコンテンツ要素を含む脚注。要素のインデックス そのセグメントの先頭を基準とします。

本文のコンテンツ内のほとんどの要素は、ゼロベースの startIndex を持ち、 endIndex プロパティ。これらは、要素の開始位置と開始位置のオフセットを示します。 それが含まれるセグメントの先頭を基準とします。詳細情報 Docs API のバッチ呼び出しを整理する方法については、バッチ 。

インデックスは UTF-16 コード単位で測定されます。つまりサロゲートペアは 2 つのインデックスがありますたとえば、「笑顔」絵文字 🙂? は次のように表される。 \uD83D\uDE00 であり、2 つのインデックスを使用します。

ドキュメント本文内の要素の場合、インデックスはドキュメントからのオフセットを 本文の「ルート」である本文部分の冒頭部分で、要素です。

「パーソナライズ」データ アナリストが 要素 - SectionBreakTableOfContents, Table、 — Paragraph インデックスは存在しないため、使用しないでください。 StructuralElement には次のフィールドがあります。これはパーソナライズでも ParagraphElement に含まれる型(TextRunAutoTextPageBreak

要素にアクセスする

多くの要素は、 documents.batchUpdate メソッドを呼び出します。たとえば、 InsertTextRequest, テキストを含むすべての要素のコンテンツを変更できます。同様に UpdateTextStyleRequest を使用すると、1 つ以上の要素に含まれているテキストの範囲に書式を適用できます。

ドキュメントの要素を読み取るには、 documents.get メソッドを使用して、 ドキュメント全体の JSON ダンプ。生成された JSON を解析して、 個々の要素の値を求めます。詳細については、出力 JSON 形式のドキュメント コンテンツです。

コンテンツの解析は、さまざまなユースケースに役立ちます。以下を検討してください。 たとえば、アプリケーションで見つけたドキュメントをカタログ化するドキュメントなどです。このアプリ ドキュメントのタイトル、リビジョン ID、開始ページ番号を抽出できます。 できます。

ドキュメント カタログの構造。
図 7. ドキュメント カタログの構造。

これらの設定を明示的に読み取る方法がないため、 ドキュメント全体を取得してから、JSON を解析して値を抽出します。

プロパティからの継承

StructuralElement は親オブジェクトからプロパティを継承できます。「 そのオブジェクトが定義するものと継承するものを含め、 最終的な外観を決定します。

テキスト文字の書式設定は、ドキュメント内でのテキストのレンダリング方法を決定します。 太字、斜体、下線を使用できます。適用する書式は、デフォルトの 継承した書式を、 TextStyle。逆に、 書式を設定しない文字は、 選択できます。

段落の書式設定は、ドキュメント内でのテキスト ブロックのレンダリング方法を決定します。 調整することもできます。適用する書式 は、基になる ParagraphStyle から継承されたデフォルトの書式をオーバーライドします。 逆に、設定していない書式設定機能は 段落スタイルを変更できます。