為了有效使用 Google Docs API,您必須瞭解 Google 文件的架構、文件組成元素,以及文件之間的關係。本頁提供下列主題的詳細說明:
- 文件元素的概念模型
- Docs 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
,代表文字樣式相同的連續字串。一個段落可以包含多個文字執行作業,但文字絕不會跨段落邊界執行。系統會在換行字元之後分割內容,藉此形成不同的文字執行。例如,假設有一份小型文件,如下所示:
![含有段落和項目符號清單的小型文件。](https://developers-dot-devsite-v2-prod.appspot.com/static/docs/api/images/simpledoc.png?authuser=3&hl=zh-tw)
下圖說明如何以視覺化方式呈現上文中的段落序列,每個段落都有專屬的 TextRun
和選用的 Bullet
設定。
AutoText
AutoText
是 ParagraphElement
,代表文字中的一個位置,內容會隨著時間動態取代。在文件中,這用於頁碼。
起始與結束索引
更新文件內容時,每次更新都會在文件中的某個位置或整個範圍中進行。這些位置和範圍是透過「索引」指定,而索引代表包含文件區段中的偏移。片段是指包含結構或內容元素的主體、標頭、頁尾或註腳。區隔中的元素索引與該區段的開頭相關。
主體內容中的大多數元素都具有以零為基礎的 startIndex
和 endIndex
屬性。這些值表示元素開始和結束的偏移量 (相對於元素封閉片段的開頭)。如要進一步瞭解如何排列批次 Docs API 呼叫的順序,請參閱「批次更新」。
索引是以 UTF-16 代碼單位計算,這表示代理組合會耗用兩個索引。舉例來說,「GRINNING FACE」表情符號 from 會以 \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
沿用的預設格式。相反地,任何未設定的格式設定地圖項目都會沿用段落樣式。