如要有效使用 Google 文件 API,您必須瞭解 Google 文件架構、組成文件的元素,以及這些元素之間的關係。本頁面詳細說明下列主題:
- 文件元素的概念模型
- Docs API 如何表示這些元素
- 元素的樣式屬性
頂層元素
Google 文件中最外層的容器元素是「文件」。這是可儲存在 Google 雲端硬碟、與其他使用者共用,以及使用文字和圖片更新的單位。
documents 資源的頂層元素包括 Tab、SuggestionsViewMode 和其他屬性:
document: {
title: ... ,
revisionId: ... ,
documentId: ... ,
suggestionsViewMode: ... ,
tabs: ...
}
分頁
單一文件可包含多個分頁,
這些分頁具有不同的文字層級內容。文件的 tabs 屬性是 Tab 物件的序列。Tab 包含下列欄位:
TabProperties: 包含索引標籤的屬性,例如 ID、標題和索引。childTabs:公開分頁的子分頁 (直接巢狀內嵌在分頁下方的分頁)。DocumentTab:代表分頁的文字內容。
後續章節會簡要概述文件分頁階層;分頁 JSON 表示法也會提供更詳細的資訊。如要進一步瞭解分頁功能,請參閱「使用分頁」。
如要操控 Body 內容以外的整體文件分頁功能,最好使用一或多個文件範本,做為以程式輔助方式產生新文件的基礎。詳情請參閱「將文字合併到文件中」。
內文
Body 通常包含文件索引標籤的完整內容。您可或可能想以程式輔助方式使用的項目,大多是 Body 內容中的元素:
結構元素
StructuralElement 描述為文件提供結構的內容。Body 內容是一連串的 StructuralElement 物件。內容元素會為每個 StructuralElement 物件提供個人化設定,如下圖所示:
結構元素及其內容物件包含文件中的所有視覺化元件。包括文字、內嵌圖片和格式。
段落結構
Paragraph 是代表段落的 StructuralElement。其中包含一系列以換行字元結尾的內容。內含下列物件:
ParagraphElement:說明段落中的內容。ParagraphStyle:選用元素,可明確設定段落的樣式屬性。Bullet:如果段落是清單的一部分,這個選用元素會提供項目符號規格。
ParagraphElement 的運作方式與 StructuralElement 類似。一組內容元素類型 (例如 ColumnBreak 和 Equation) 會自訂 ParagraphElement,如下圖所示:
如需完整文件結構的範例,請參閱 JSON 格式的文件範例。在輸出內容中,您可以看到許多重要的結構和內容元素,以及如後續章節所述的開始和結束索引。
文字執行
TextRun 是指ParagraphElement,代表具有相同文字樣式的連續文字字串。一個段落可以包含多個文字執行,但文字執行絕不會跨越段落界線。內容會在換行字元後分割,形成個別的文字執行。舉例來說,請看以下小型文件:
下圖顯示如何將前述文件中的段落序列視覺化,每個段落都有自己的 TextRun 和選用的 Bullet 設定。
AutoText
AutoText 是 ParagraphElement,代表文字中的位置,會動態替換為可能隨時間變更的內容。在 Google 文件中,這項功能用於頁碼。
起始和結束索引
更新文件分頁的內容時,每次更新都會在文件中的特定位置或範圍進行。這些位置和範圍是使用索引指定,代表所含文件區段中的位移。區段是包含結構或內容元素的內文、標頭、頁尾或註腳。區隔中元素的索引值是相對於該區隔的開頭。
內文內容中的大多數元素都有以零為基準的 startIndex 和 endIndex 屬性。這些值表示元素開頭和結尾的偏移量,相對於封閉區隔的開頭。如要進一步瞭解如何排序批次文件 API 呼叫,請參閱批次更新。
索引是以 UTF-16 程式碼單元為單位計算。也就是說,代理配對會耗用兩個索引。舉例來說,「GRINNING FACE」表情符號 😄 會以 \uD83D\uDE00 表示,並耗用兩個索引。
如果是文件內文中的元素,索引代表與內文內容開頭 (即「根」元素) 的位移。
結構化元素 (SectionBreak、TableOfContents、Table 和 Paragraph) 的「個人化」類型沒有這些索引,因為其封閉的 StructuralElement 具有這些欄位。ParagraphElement 中包含的個人化類型 (例如 TextRun、AutoText 和 PageBreak) 也是如此。
存取元素
許多元素都可以使用 documents.batchUpdate 方法修改。舉例來說,使用 InsertTextRequest,您可以變更任何含有文字的元素內容。同樣地,您可以使用 UpdateTextStyleRequest,將格式套用至一或多個元素所含的文字範圍。
如要讀取文件的元素,請使用 documents.get 方法取得完整文件的 JSON 傾印。接著,您可以剖析產生的 JSON,找出個別元素的值。詳情請參閱「以 JSON 格式輸出文件內容」。
剖析內容有助於各種用途。舉例來說,假設您有一個文件編目應用程式,會列出找到的文件。這個應用程式可以擷取文件索引標籤的標題、修訂版本 ID 和起始頁碼,如下圖所示:
由於沒有明確讀取這些設定的方法,應用程式必須取得整個文件,然後剖析 JSON 來擷取這些值。
資源繼承
StructuralElement 可以沿用父項物件的屬性。物件的屬性 (包括定義和繼承的屬性) 會決定最終的視覺外觀。
文字字元格式決定文字在文件中的呈現方式,例如粗體、斜體和底線。您套用的格式會覆寫從基礎段落TextStyle繼承的預設格式。
反之,如果未設定任何字元的格式,系統會繼續沿用段落樣式。
段落格式決定文字區塊在文件中呈現的方式,例如對齊方式、邊框和縮排。您套用的格式會覆寫從基礎 ParagraphStyle 繼承的預設格式。反之,您未設定的任何格式設定功能,都會繼續沿用段落樣式。