Untuk menggunakan Google Docs API secara efektif, Anda harus memahami arsitektur dokumen Google Dokumen dan elemen-elemen yang membentuk sebuah dokumen, serta hubungan di antara keduanya. Halaman ini memberikan ringkasan detail tentang topik berikut:
- Model konseptual elemen dokumen
- Cara Docs API merepresentasikan elemen ini
- Properti gaya visual elemen
Elemen tingkat atas
Elemen penampung terluar di Google Dokumen adalah dokumen. Ini adalah unit yang dapat disimpan di Google Drive, dibagikan kepada pengguna lain, dan diperbarui dengan teks dan gambar.
Elemen tingkat atas resource documents
mencakup Tab
,
SuggestionsViewMode
,
dan atribut lainnya:
document: { title: ... , revisionId: ... , documentId: ... , suggestionsViewMode: ... , tabs: ... }
Tabs
Satu dokumen dapat berisi beberapa tab, yang
memiliki konten tingkat teks yang berbeda. Properti tabs
dokumen adalah
urutan objek Tab
. Tab
terdiri dari kolom berikut:
TabProperties
: Berisi atribut tab seperti ID, judul, dan indeks.childTabs
: Mengekspos tab turunan tab (tab yang disusun bertingkat langsung di bawahnya).DocumentTab
: Merepresentasikan konten teks tab.
Bagian berikutnya memberikan ringkasan singkat tentang hierarki tab dokumen; Representasi JSON Tab juga memberikan informasi yang lebih mendetail. Lihat Menggunakan Tab untuk mengetahui informasi selengkapnya tentang fitur tab.
Untuk memanipulasi fitur tab dokumen global di luar konten Body
, sebaiknya
gunakan satu atau beberapa template dokumen, yang dapat Anda gunakan sebagai
dasar untuk membuat dokumen baru secara terprogram. Untuk informasi selengkapnya, lihat
Menggabungkan teks ke dalam dokumen.
Konten isi
Body
biasanya berisi konten lengkap tab dokumen. Sebagian besar
item yang dapat, atau mungkin ingin, Anda gunakan secara terprogram adalah elemen dalam
konten Body
:
Elemen struktural
StructuralElement
menjelaskan konten yang memberikan struktur pada dokumen. Konten Body
adalah
urutan objek StructuralElement
. Elemen konten mempersonalisasi setiap
objek StructuralElement
, seperti yang ditunjukkan dalam diagram berikut:
Elemen struktural dan objek kontennya berisi semua komponen visual dalam dokumen. Hal ini mencakup teks, gambar inline, dan pemformatan.
Struktur paragraf
Paragraph
adalah
StructuralElement
yang mewakili paragraf. Terdapat berbagai macam konten yang
dihentikan dengan karakter baris baru. Terdiri dari objek-objek berikut ini:
ParagraphElement
: Menjelaskan konten dalam paragraf.ParagraphStyle
: Elemen opsional yang secara eksplisit menetapkan properti gaya untuk paragraf.Bullet
: Jika paragraf merupakan bagian dari daftar, elemen opsional yang memberikan spesifikasi titik.
ParagraphElement
berfungsi seperti StructuralElement
. Sekumpulan
jenis elemen konten (seperti
ColumnBreak
dan
Equation
) mempersonalisasi
ParagraphElement
-nya sendiri, seperti yang ditunjukkan dalam diagram berikut:
Untuk contoh struktur dokumen lengkap, lihat contoh dokumen dalam format JSON. Dalam output, Anda dapat melihat banyak elemen struktural dan konten utama, serta penggunaan indeks awal dan akhir seperti yang dijelaskan di bagian berikut.
Pengoperasian teks
TextRun
adalah
ParagraphElement
yang mewakili string teks yang berdekatan dengan semua gaya teks yang sama. Paragraf
dapat berisi beberapa run teks, tetapi run teks tidak pernah melintasi batas
paragraf. Konten dibagi setelah karakter baris baru untuk membentuk run teks
terpisah. Misalnya, pertimbangkan dokumen kecil seperti berikut:
Diagram berikut menunjukkan cara memvisualisasikan urutan paragraf
dalam dokumen sebelumnya, masing-masing dengan setelan TextRun
dan Bullet
opsionalnya sendiri.
AutoText
AutoText
adalah
ParagraphElement
yang mewakili tempat dalam teks yang diganti secara dinamis
dengan konten yang dapat berubah dari waktu ke waktu. Di Dokumen, ini digunakan
untuk nomor halaman.
Indeks awal dan akhir
Saat Anda melakukan pembaruan pada konten tab dokumen, setiap pembaruan akan terjadi di lokasi atau di seluruh rentang dalam dokumen. Lokasi dan rentang ini ditentukan menggunakan indeks, yang mewakili offset dalam segmen dokumen yang berisi. Segmen adalah isi, header, footer, atau catatan kaki yang berisi elemen struktural atau konten. Indeks elemen dalam segmen bersifat relatif terhadap awal segmen tersebut.
Sebagian besar elemen dalam konten isi memiliki properti startIndex
dan
endIndex
berbasis nol. Ini menunjukkan offset awal dan akhir elemen, yang relatif terhadap awal segmen yang menyertainya. Untuk informasi selengkapnya
tentang cara mengurutkan panggilan Docs API batch Anda, lihat Update
batch.
Indeks diukur dalam unit kode UTF-16. Artinya, pasangan surrogate menggunakan
dua indeks. Misalnya, emoji "GRINNING FACE", Match, direpresentasikan sebagai \uD83D\uDE00
dan menggunakan dua indeks.
Untuk elemen dalam isi dokumen, indeks mewakili offset dari awal konten isi, yang merupakan elemen "root".
Jenis "personalisasi" untuk elemen
struktural—SectionBreak
,
TableOfContents
,
Table
, dan
Paragraph
—tidak memiliki indeks ini karena StructuralElement
penyertanya memiliki kolom ini. Hal ini juga berlaku untuk jenis
personalisasi yang terdapat dalam ParagraphElement
, seperti TextRun
, AutoText
, dan
PageBreak
.
Mengakses elemen
Banyak elemen yang dapat diubah dengan metode
documents.batchUpdate
. Misalnya, dengan
InsertTextRequest
,
Anda dapat mengubah konten elemen yang berisi teks. Demikian pula, Anda dapat
menggunakan
UpdateTextStyleRequest
untuk menerapkan pemformatan ke rentang teks yang terdapat dalam satu atau beberapa elemen.
Untuk membaca elemen dokumen, gunakan metode documents.get
untuk mendapatkan dump JSON dari dokumen lengkap. Kemudian, Anda dapat mengurai JSON yang dihasilkan untuk menemukan nilai setiap elemen. Untuk informasi selengkapnya, lihat Outputkan
konten dokumen sebagai JSON.
Mengurai konten dapat bermanfaat untuk berbagai kasus penggunaan. Misalnya, aplikasi katalogisasi dokumen yang mencantumkan dokumen yang ditemukannya. Aplikasi ini dapat mengekstrak judul, ID revisi, dan nomor halaman awal tab dokumen, seperti yang ditunjukkan dalam diagram berikut:
Karena tidak ada metode untuk membaca setelan ini secara eksplisit, aplikasi Anda harus mendapatkan seluruh dokumen, lalu mengurai JSON untuk mengekstrak nilai ini.
Warisan properti
StructuralElement
dapat mewarisi properti dari objek induknya. Properti objek, termasuk properti yang ditentukan dan yang diwarisinya, akan menentukan tampilan visual akhirnya.
Pemformatan karakter teks menentukan cara teks dirender dalam dokumen, seperti
tebal, miring, dan garis bawah. Format yang Anda terapkan akan menggantikan pemformatan default yang diwarisi dari TextStyle
paragraf yang mendasarinya. Sebaliknya, karakter apa pun
yang pemformatannya tidak Anda tetapkan akan terus mewarisi dari
gaya paragraf.
Pemformatan paragraf menentukan cara blok teks dirender dalam dokumen,
seperti perataan, batas, dan indentasi. Format yang Anda terapkan
akan menggantikan format default yang diwarisi dari ParagraphStyle
yang mendasarinya.
Sebaliknya, fitur pemformatan apa pun yang tidak Anda tetapkan akan terus diwarisi dari gaya paragraf.