Google Docs दस्तावेज़ का स्ट्रक्चर

Google Docs API का सही तरीके से इस्तेमाल करने के लिए, आपको Google Docs दस्तावेज़ के आर्किटेक्चर और दस्तावेज़ बनाने वाले एलिमेंट के साथ-साथ, उनके बीच के संबंध को समझना होगा. इस पेज पर इन विषयों के बारे में खास जानकारी मिलती है:

  • दस्तावेज़ के एलिमेंट का सैद्धांतिक मॉडल
  • Docs API इन एलिमेंट को कैसे दिखाता है
  • एलिमेंट की स्टाइलिंग प्रॉपर्टी

टॉप लेवल के एलिमेंट

Google Docs में कंटेनर का सबसे बाहरी एलिमेंट, दस्तावेज़ है. इस इकाई को Google Drive में सेव किया जा सकता है और दूसरे उपयोगकर्ताओं के साथ शेयर किया जा सकता है. साथ ही, इसे टेक्स्ट और इमेज से अपडेट किया जा सकता है.

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 है. यह एक जैसी टेक्स्ट स्टाइल वाले टेक्स्ट की लगातार होने वाली स्ट्रिंग को दिखाता है. किसी पैराग्राफ़ में एक से ज़्यादा टेक्स्ट रन हो सकते हैं, लेकिन टेक्स्ट कभी भी पैराग्राफ़ की सीमाओं को पार नहीं करता. कॉन्टेंट को एक नई लाइन के वर्ण के बाद, अलग-अलग टेक्स्ट चलाने के लिए बांटा जाता है. उदाहरण के लिए, नीचे दिया गया एक छोटा दस्तावेज़ देखें:

पैराग्राफ़ और बुलेट वाली सूची वाला छोटा दस्तावेज़.
चौथी इमेज. कोई छोटा दस्तावेज़.

यहां दिए गए डायग्राम में दिखाया गया है कि पिछले दस्तावेज़ में पैराग्राफ़ के क्रम को कैसे विज़ुअलाइज़ किया जा सकता है. हर पैराग्राफ़ की अपनी TextRun और Bullet वैकल्पिक सेटिंग के साथ क्या किया जा सकता है.

रन किए जाने वाले टेक्स्ट का स्ट्रक्चर.
पांचवी इमेज. रन किए जाने वाले टेक्स्ट का स्ट्रक्चर.

AutoText

AutoText एक ParagraphElement है, जो टेक्स्ट में एक स्पॉट को दिखाता है, जिसे डाइनैमिक तौर पर ऐसे कॉन्टेंट से बदला जाता है जो समय के साथ बदल सकता है. Docs में इसका इस्तेमाल पेज नंबर के लिए किया जाता है.

इंडेक्स शुरू और खत्म करें

किसी दस्तावेज़ के कॉन्टेंट में बदलाव करते समय, हर अपडेट किसी जगह या दस्तावेज़ में अलग-अलग जगहों पर होता है. इन जगहों और रेंज को indexes का इस्तेमाल करके तय किया जाता है. ये इंडेक्स, ऐसे दस्तावेज़ सेगमेंट में ऑफ़सेट दिखाते हैं जिसमें शामिल हो. सेगमेंट, एक ऐसा मुख्य हिस्सा, हेडर, फ़ुटर या फ़ुटनोट होता है जिसमें स्ट्रक्चरल या कॉन्टेंट एलिमेंट शामिल होते हैं. किसी सेगमेंट में एलिमेंट के इंडेक्स, उस सेगमेंट की शुरुआत से जुड़े होते हैं.

मुख्य हिस्से के कॉन्टेंट के ज़्यादातर एलिमेंट में startIndex और endIndex प्रॉपर्टी शून्य पर आधारित होती हैं. ये एलिमेंट के शुरुआती और आखिरी हिस्से के मुकाबले, एलिमेंट के शुरू और खत्म होने के ऑफ़सेट को दिखाते हैं. Docs API कॉल के अपने बैच को ऑर्डर करने के तरीके के बारे में ज़्यादा जानकारी के लिए, बैच अपडेट देखें.

इंडेक्स, UTF-16 कोड यूनिट में मापे जाते हैं. इसका मतलब है कि सरोगेट जोड़े, दो इंडेक्स का इस्तेमाल करते हैं. उदाहरण के लिए, "GRINNING FACE" इमोजी, YOUTUBE को \uD83D\uDE00 के तौर पर दिखाया जाता है और यह दो इंडेक्स का इस्तेमाल करता है.

दस्तावेज़ के मुख्य हिस्से में मौजूद एलिमेंट के लिए, इंडेक्स, मुख्य हिस्से के कॉन्टेंट की शुरुआत से ऑफ़सेट दिखाते हैं, जो "रूट" एलिमेंट है.

स्ट्रक्चरल एलिमेंट के लिए, "लोगों के हिसाब से बनाना" टाइप, जैसे कि SectionBreak, TableOfContents, Table, और Paragraph में ये इंडेक्स नहीं होते हैं, क्योंकि एनक्लोज़र StructuralElement में ये फ़ील्ड होते हैं. यही बात ParagraphElement में मौजूद TextRun, AutoText, और PageBreak जैसे ऐप्लिकेशन को उपयोगकर्ता के मनमुताबिक बनाने की सुविधा पर भी लागू होती है.

ऐक्सेस एलिमेंट

documents.batchUpdate तरीके से कई एलिमेंट में बदलाव किया जा सकता है. उदाहरण के लिए, InsertTextRequest का इस्तेमाल करके, टेक्स्ट वाले किसी भी एलिमेंट का कॉन्टेंट बदला जा सकता है. इसी तरह, एक या एक से ज़्यादा एलिमेंट में मौजूद टेक्स्ट की रेंज में फ़ॉर्मैटिंग लागू करने के लिए, UpdateTextStyleRequest का इस्तेमाल किया जा सकता है.

दस्तावेज़ के एलिमेंट पढ़ने के लिए, पूरे दस्तावेज़ का JSON डंप पाने के लिए, documents.get तरीके का इस्तेमाल करें. इसके बाद, अलग-अलग एलिमेंट की वैल्यू ढूंढने के लिए, जनरेट किए गए JSON को पार्स किया जा सकता है. ज़्यादा जानकारी के लिए, आउटपुट दस्तावेज़ का कॉन्टेंट, JSON फ़ॉर्मैट में देखें.

कॉन्टेंट को पार्स करने से, अलग-अलग तरह के कामों में मदद मिल सकती है. उदाहरण के लिए, एक ऐसे दस्तावेज़ की सूची बनाएं जिसमें ऐप्लिकेशन को मिले दस्तावेज़ों की सूची मौजूद हो. यह ऐप्लिकेशन, दस्तावेज़ का टाइटल, रिविज़न आईडी, और शुरुआती पेज नंबर एक्सट्रैक्ट कर सकता है, जैसा कि नीचे डायग्राम में दिखाया गया है:

दस्तावेज़ के कैटलॉग का स्ट्रक्चर.
छठी इमेज. दस्तावेज़ के कैटलॉग का स्ट्रक्चर.

साफ़ तौर पर इन सेटिंग को पढ़ने का कोई तरीका नहीं है, इसलिए आपके ऐप्लिकेशन को पूरे दस्तावेज़ की जानकारी लेनी होगी और फिर इन वैल्यू को एक्सट्रैक्ट करने के लिए, JSON को पार्स करना होगा.

प्रॉपर्टी इनहेरिटेंस

StructuralElement अपने पैरंट ऑब्जेक्ट से प्रॉपर्टी इनहेरिट कर सकता है. किसी ऑब्जेक्ट की प्रॉपर्टी, उसके फ़ाइनल विज़ुअल लुक को तय करती हैं. इनमें, तय की गई और इनहेरिट की गई प्रॉपर्टी भी शामिल होती हैं.

टेक्स्ट कैरेक्टर फ़ॉर्मैटिंग से यह तय होता है कि किसी दस्तावेज़ में टेक्स्ट कैसे रेंडर होगा. जैसे, बोल्ड, इटैलिक, और अंडरलाइन. लागू किया गया फ़ॉर्मैट, पैराग्राफ़ के TextStyle से इनहेरिट किए गए डिफ़ॉल्ट फ़ॉर्मैट को बदल देता है. इसके ठीक उलट, आपने जिन वर्णों की फ़ॉर्मैटिंग सेट नहीं की है वे पैराग्राफ़ की स्टाइल को अपनाते हैं.

पैराग्राफ़ फ़ॉर्मैटिंग से यह तय होता है कि किसी दस्तावेज़ में टेक्स्ट के ब्लॉक कैसे रेंडर किए जाते हैं. जैसे, अलाइनमेंट, बॉर्डर, और इंडेंट. लागू की गई फ़ॉर्मैटिंग, ParagraphStyle से इनहेरिट की गई डिफ़ॉल्ट फ़ॉर्मैटिंग को बदल देती है. इसके ठीक उलट, आपने जिन फ़ॉर्मैटिंग सुविधाओं को सेट नहीं किया है वे पैराग्राफ़ स्टाइल से इनहेरिट करती रहती हैं.