Struktur dokumen Google Dokumen

Untuk menggunakan Google Docs API secara efektif, Anda harus memahami arsitektur dokumen Google Dokumen dan elemen yang membentuk dokumen, serta hubungan di antara keduanya. Halaman ini memberikan ringkasan mendetail tentang topik berikut:

  • Model konseptual elemen dokumen
  • Cara Docs API merepresentasikan elemen ini
  • Properti gaya visual elemen

Elemen tingkat teratas

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.
Struktur tab dokumen.
Gambar 1. Struktur tab dokumen.

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:

Struktur konten isi.
Gambar 2. Struktur konten isi.

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.
Gambar 3. Elemen struktural.

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. File ini memiliki rentang konten yang diakhiri dengan karakter baris baru. Terdiri dari objek berikut:

  • 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. Kumpulan jenis elemen konten (seperti ColumnBreak dan Equation) mempersonalisasi ParagraphElement-nya sendiri, seperti yang ditunjukkan dalam diagram berikut:

Struktur elemen paragraf.
Gambar 4. Struktur elemen paragraf.

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:

Dokumen kecil dengan paragraf dan daftar berbutir.
Gambar 5. Dokumen kecil.

Diagram berikut menunjukkan cara memvisualisasikan urutan paragraf dalam dokumen sebelumnya, masing-masing dengan setelan TextRun dan Bullet opsionalnya sendiri.

Struktur teks yang dijalankan.
Gambar 6. Struktur teks yang dijalankan.

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, lihat Pembaruan batch.

Indeks diukur dalam unit kode UTF-16. Artinya, pasangan pengganti menggunakan dua indeks. Misalnya, emoji "WAJAH TERSENYUM", 😄, 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, menggunakan InsertTextRequest, Anda dapat mengubah konten elemen apa pun yang berisi teks. Demikian pula, Anda dapat menggunakan UpdateTextStyleRequest untuk menerapkan format ke rentang teks yang terdapat dalam satu atau beberapa elemen.

Untuk membaca elemen dokumen, gunakan metode documents.get untuk mendapatkan dump JSON dokumen lengkap. Kemudian, Anda dapat mengurai JSON yang dihasilkan untuk menemukan nilai setiap elemen. Untuk informasi selengkapnya, lihat Output 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:

Struktur katalog dokumen.
Gambar 7. Struktur katalog dokumen.

Karena tidak ada metode untuk membaca setelan ini secara eksplisit, aplikasi Anda perlu 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 properti yang diwarisi, menentukan tampilan visual akhirnya.

Pemformatan karakter teks menentukan cara teks dirender dalam dokumen, seperti cetak tebal, miring, dan garis bawah. Pemformatan yang Anda terapkan akan menggantikan pemformatan default yang diwarisi dari TextStyle paragraf pokok. Sebaliknya, karakter apa pun yang pemformatannya tidak Anda tetapkan akan terus diwarisi 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.