為了有效使用 Google Document API,您必須瞭解 Google 文件的架構和組成文件的元素,以及這些文件之間的關係。本頁面提供這些主題的詳細總覽:
- 文件元素的概念模型
- Document API 如何表示這些元素
- 元素的樣式屬性
頂層元素
Google 文件最外層的容器元素是「文件」。這個單位可以儲存在 Google 雲端硬碟、與其他使用者共用,並包含文字和圖片更新。
documents
資源的頂層元素包括 Body
、Header
、Footer
和其他多個屬性:
document: { body: ... , documentStyle: ... , lists: ... , documentId: ... , namedStyles: ... , revisionId: ... , title: ... }
如要操控 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」表情符號「Hum」以 \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
沿用的預設格式設定。相反地,未設定的所有格式地圖項目都會繼續沿用段落樣式。