Google Dokümanlar dokümanının yapısı

Google Docs API'yi etkili bir şekilde kullanmak için Google Dokümanları dokümanının mimarisini, dokümanı oluşturan öğeleri ve aralarındaki ilişkiyi anlamanız gerekir. Bu sayfada aşağıdaki konularla ilgili ayrıntılı bir genel bakış sunulmaktadır:

  • Belge öğelerinin kavramsal modeli
  • Docs API bu öğeleri nasıl temsil eder?
  • Öğelerin stil özellikleri

Üst düzey öğeler

Google Dokümanlar'daki en dıştaki kapsayıcı öğe bir dokümandır. Bu birim Google Drive'a kaydedilebilir, diğer kullanıcılarla paylaşılabilir ve metinler ile resimlerle güncellenebilir.

Bir documents kaynağının üst düzey öğeleri, Tab, SuggestionsViewMode ve diğer özellikleri içerir:

document: {
    title: ... ,
    revisionId: ... ,
    documentId: ... ,
    suggestionsViewMode: ... ,
    tabs: ...
}

Sekmeler

Tek bir doküman, farklı metin düzeyinde içeriklere sahip birden fazla sekme içerebilir. Belgenin tabs özelliği, Tab nesnelerinin sırasıdır. Tab aşağıdaki alanlardan oluşur:

  • TabProperties: Kimlik, başlık ve dizin gibi bir sekmenin özelliklerini içerir.
  • childTabs: Bir sekmenin alt sekmelerini (doğrudan altına yerleştirilmiş sekmeler) gösterir.
  • DocumentTab: Bir sekmenin metin içeriğini gösterir.
Doküman sekmelerinin yapısı.
1.Şekil Doküman sekmelerinin yapısı.

Sonraki bölümlerde, doküman sekmesi hiyerarşisine kısa bir genel bakış sunulmaktadır. Tab JSON gösterimi de daha ayrıntılı bilgi sağlar. Sekmeler özelliği hakkında daha fazla bilgi için Sekmelerle çalışma başlıklı makaleyi inceleyin.

Genel doküman sekmesi özelliklerini Body içeriği dışında kullanmak için yeni dokümanları programatik olarak oluştururken temel olarak kullanabileceğiniz bir veya daha fazla doküman şablonu kullanmak neredeyse her zaman daha iyidir. Daha fazla bilgi için Metni belgeye birleştirme başlıklı makaleyi inceleyin.

Gövde içeriği

Body genellikle bir dokümanın sekmesinin tüm içeriğini içerir. Programatik olarak kullanabileceğiniz veya kullanmak isteyeceğiniz öğelerin çoğu Body içeriğindeki öğelerdir:

Gövde içeriğinin yapısı.
Şekil 2. Gövde içeriğinin yapısı.

Yapısal öğe

StructuralElement, dokümana yapı kazandıran içeriği tanımlar. Body içeriği, StructuralElement nesnelerden oluşan bir dizidir. Bir içerik öğesi, aşağıdaki şemada gösterildiği gibi her bir StructuralElement nesnesini kişiselleştirir:

Yapısal öğeler.
3.şekil Yapısal öğeler.

Yapısal öğeler ve içerik nesneleri, dokümandaki tüm görsel bileşenleri içerir. Metin, satır içi resimler ve biçimlendirme buna dahildir.

Paragraf yapısı

Paragraph, bir paragrafı temsil eden StructuralElement türüdür. Yeni satır karakteriyle sonlandırılan bir dizi içerik barındırıyor. Aşağıdaki nesnelerden oluşur:

  • ParagraphElement: Bir paragraftaki içeriği açıklar.
  • ParagraphStyle: Paragrafın stil özelliklerini açıkça ayarlayan isteğe bağlı bir öğe.
  • Bullet: Paragraf bir listenin parçasıysa madde işareti belirtimini sağlayan isteğe bağlı bir öğe.

ParagraphElement, StructuralElement gibi çalışır. Bir dizi içerik öğesi türü (ör. ColumnBreak ve Equation), aşağıdaki şemada gösterildiği gibi kendi ParagraphElement öğesini kişiselleştirir:

Paragraf öğelerinin yapısı.
4.şekil Paragraf öğelerinin yapısı.

Tam bir belge yapısı örneği için JSON biçimindeki belge örneğine bakın. Çıktıda, temel yapısal ve içerik öğelerinin birçoğunun yanı sıra sonraki bir bölümde açıklanan başlangıç ve bitiş dizinlerinin kullanımını görebilirsiniz.

Metin çalıştırmaları

TextRun, ParagraphElement olan ve aynı metin stiline sahip bitişik bir metin dizesini temsil eden bir öğedir. Bir paragraf birden fazla metin çalıştırması içerebilir ancak metin çalıştırmaları hiçbir zaman paragraf sınırlarını aşmaz. İçerikler, ayrı metin çalıştırmaları oluşturmak için yeni satır karakterinden sonra bölünür. Örneğin, aşağıdaki gibi küçük bir dokümanı ele alalım:

Paragraflar ve madde işaretli liste içeren küçük bir doküman.
5.şekil Küçük bir doküman.

Aşağıdaki şemada, önceki dokümandaki paragrafların sırasını nasıl görselleştirebileceğiniz gösterilmektedir. Her paragrafın kendi TextRun ve isteğe bağlı Bullet ayarları vardır.

Metin çalıştırmanın yapısı.
6.şekil Metin çalıştırmanın yapısı.

AutoText

AutoText, metinde zaman içinde değişebilen içerikle dinamik olarak değiştirilen bir noktayı temsil eden bir ParagraphElement'dir. Dokümanlar'da bu özellik sayfa numaraları için kullanılır.

Başlangıç ve bitiş dizinleri

Bir dokümanın sekmesindeki içerikte güncelleme yaptığınızda her güncelleme, dokümandaki bir konumda veya bir aralıkta gerçekleşir. Bu konumlar ve aralıklar, dizinler kullanılarak belirtilir. Dizinler, kapsayan bir doküman segmentindeki bir uzaklığı temsil eder. Segment, yapısal veya içerik öğeleri içeren gövde, üstbilgi, altbilgi ya da dipnottur. Bir segmentteki öğelerin dizinleri, söz konusu segmentin başlangıcına göre belirlenir.

Gövde içeriğindeki çoğu öğe sıfır tabanlı startIndex ve endIndex özelliklerine sahiptir. Bunlar, bir öğenin başlangıcının ve bitişinin, kapsayan segmentinin başlangıcına göre olan uzaklığını gösterir. Toplu Docs API çağrılarınızı sıralama hakkında daha fazla bilgi için Toplu güncellemeler bölümüne bakın.

Dizinler UTF-16 kod birimleriyle ölçülür. Bu, vekil çiftlerinin iki dizin kullandığı anlamına gelir. Örneğin, "Sırıtan Yüz" emojisi 😄, \uD83D\uDE00 olarak temsil edilir ve iki indeks tüketir.

Bir doküman gövdesindeki öğeler için dizinler, gövde içeriğinin başlangıcından itibaren olan uzaklıkları temsil eder. Bu uzaklıklar, "kök" öğe olarak kabul edilir.

Yapısal öğeler için "kişiselleştirme" türleri (SectionBreak, TableOfContents, Table ve Paragraph) bu dizinlere sahip değildir. Çünkü bunları içeren StructuralElement öğesinde bu alanlar bulunur. Bu durum, ParagraphElement içinde yer alan kişiselleştirme türleri (ör. TextRun, AutoText ve PageBreak) için de geçerlidir.

Erişim öğeleri

Birçok öğe, documents.batchUpdate yöntemiyle değiştirilebilir. Örneğin, InsertTextRequest kullanarak metin içeren herhangi bir öğenin içeriğini değiştirebilirsiniz. Benzer şekilde, bir veya daha fazla öğede bulunan bir metin aralığına biçimlendirme uygulamak için UpdateTextStyleRequest'ı kullanabilirsiniz.

Belgenin öğelerini okumak için documents.get yöntemini kullanarak belgenin tamamının JSON dökümünü alın. Ardından, sonuçtaki JSON'ı ayrıştırarak tek tek öğelerin değerlerini bulabilirsiniz. Daha fazla bilgi için Çıkış belgesi içeriğini JSON olarak bölümüne bakın.

İçeriğin ayrıştırılması çeşitli kullanım alanları için faydalı olabilir. Örneğin, bulduğu dokümanları listeleyen bir doküman kataloglama uygulamasını ele alalım. Bu uygulama, aşağıdaki şemada gösterildiği gibi bir dokümanın sekmelerinin başlığını, düzeltme kimliğini ve başlangıç sayfa numarasını ayıklayabilir:

Doküman kataloğunun yapısı.
7.şekil Doküman kataloğunun yapısı.

Bu ayarları açıkça okumak için herhangi bir yöntem olmadığından uygulamanızın, bu değerleri ayıklamak için önce belgenin tamamını alması ve ardından JSON'ı ayrıştırması gerekir.

Mülkü devralma

Bir StructuralElement, özellikleri üst nesnelerinden devralabilir. Bir nesnenin tanımladığı ve devraldığı özellikler dahil olmak üzere nesnenin özellikleri, son görsel görünümünü belirler.

Metin karakteri biçimlendirmesi, metnin bir belgede nasıl oluşturulacağını belirler. Örneğin, kalın, italik ve altı çizili. Uyguladığınız biçimlendirme, temel paragrafın TextStyle öğesinden devralınan varsayılan biçimlendirmeyi geçersiz kılar. Buna karşılık, biçimlendirmesini ayarlamadığınız karakterler paragrafın stillerini devralmaya devam eder.

Paragraf biçimlendirmesi, metin bloklarının bir belgede nasıl oluşturulacağını belirler. Örneğin, hizalama, kenarlıklar ve girinti. Uyguladığınız biçimlendirme, temel ParagraphStyle öğesinden devralınan varsayılan biçimlendirmeyi geçersiz kılar. Aksine, ayarlamadığınız tüm biçimlendirme özellikleri paragraf stilinden devralınmaya devam eder.