如要有效使用 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
屬性。這些值會指出元素開頭和結尾的偏移量,相對於所屬封閉區段的開頭。如要進一步瞭解如何訂購批次 Docs 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
繼承的預設格式。相反地,未設定的格式設定功能會繼續繼承段落樣式。