একটি Google ডক্স ডকুমেন্টের কাঠামো

Google ডক্স এপিআই কার্যকরভাবে ব্যবহার করার জন্য, আপনাকে অবশ্যই একটি Google ডক্স ডকুমেন্টের আর্কিটেকচার এবং একটি নথি তৈরি করার উপাদানগুলির পাশাপাশি তাদের মধ্যে সম্পর্ক বুঝতে হবে৷ এই পৃষ্ঠাটি এই বিষয়গুলির একটি বিশদ ওভারভিউ প্রদান করে:

  • নথির উপাদানগুলির একটি ধারণাগত মডেল
  • ডক্স এপিআই কীভাবে এই উপাদানগুলিকে উপস্থাপন করে
  • উপাদানের স্টাইলিং বৈশিষ্ট্য

শীর্ষ-স্তরের উপাদান

Google ডক্সের সবচেয়ে বাইরের ধারক উপাদান হল একটি নথি । এটি এমন একক যা Google ড্রাইভে সংরক্ষণ করা যায়, অন্যান্য ব্যবহারকারীদের সাথে ভাগ করা যায় এবং পাঠ্য এবং চিত্র সহ আপডেট করা যায়৷

একটি documents সম্পদের শীর্ষ-স্তরের উপাদানগুলির মধ্যে রয়েছে এর Tab , SuggestionsViewMode এবং অন্যান্য বৈশিষ্ট্যগুলি:

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

ট্যাব

একটি একক নথিতে একাধিক ট্যাব থাকতে পারে, যার বিভিন্ন পাঠ্য-স্তরের বিষয়বস্তু রয়েছে। ডকুমেন্টের tabs বৈশিষ্ট্য হল Tab অবজেক্টের একটি ক্রম। একটি Tab নিম্নলিখিত ক্ষেত্রগুলি নিয়ে গঠিত:

  • TabProperties : একটি ট্যাবের বৈশিষ্ট্য যেমন আইডি, শিরোনাম এবং সূচী ধারণ করে।
  • childTabs : একটি ট্যাবের চাইল্ড ট্যাব (ট্যাবগুলি যা সরাসরি এটির নীচে নেস্ট করা হয়) প্রকাশ করে।
  • DocumentTab : একটি ট্যাবের পাঠ্য বিষয়বস্তু প্রতিনিধিত্ব করে।
একটি নথির ট্যাবের গঠন।
চিত্র 1. একটি নথির ট্যাবের গঠন।

পরবর্তী বিভাগগুলি নথি ট্যাব শ্রেণিবিন্যাসের একটি সংক্ষিপ্ত বিবরণ দেয়; ট্যাব JSON উপস্থাপনা আরও বিস্তারিত তথ্য প্রদান করে। ট্যাব বৈশিষ্ট্য সম্পর্কে আরও তথ্যের জন্য ট্যাবগুলির সাথে কাজ দেখুন৷

Body বিষয়বস্তুর বাইরে গ্লোবাল ডকুমেন্ট ট্যাব বৈশিষ্ট্যগুলিকে ম্যানিপুলেট করার জন্য, এক বা একাধিক নথি টেমপ্লেট ব্যবহার করা প্রায় সবসময়ই ভাল, যা আপনি প্রোগ্রামগতভাবে নতুন নথি তৈরি করার জন্য একটি ভিত্তি হিসাবে ব্যবহার করতে পারেন৷ আরও তথ্যের জন্য, একটি নথিতে পাঠ্য মার্জ করুন দেখুন।

শরীরের বিষয়বস্তু

Body সাধারণত একটি নথির ট্যাবের সম্পূর্ণ বিষয়বস্তু থাকে। আপনি যে আইটেমগুলিকে প্রোগ্রাম্যাটিকভাবে ব্যবহার করতে পারেন বা সম্ভবত ব্যবহার করতে চান তার বেশিরভাগই Body কন্টেন্টের উপাদান:

শরীরের বিষয়বস্তুর গঠন.
চিত্র 2. শরীরের বিষয়বস্তুর গঠন.

কাঠামোগত উপাদান

একটি StructuralElement এমন বিষয়বস্তু বর্ণনা করে যা নথিতে কাঠামো প্রদান করে। Body কন্টেন্ট হল StructuralElement বস্তুর একটি ক্রম। একটি বিষয়বস্তু উপাদান প্রতিটি StructuralElement অবজেক্টকে ব্যক্তিগতকৃত করে, যেমনটি নিম্নলিখিত চিত্রে দেখানো হয়েছে:

কাঠামোগত উপাদান।
চিত্র 3. কাঠামোগত উপাদান।

কাঠামোগত উপাদান এবং তাদের বিষয়বস্তু বস্তু নথির মধ্যে সমস্ত চাক্ষুষ উপাদান ধারণ করে। এর মধ্যে পাঠ্য, ইনলাইন চিত্র এবং বিন্যাস অন্তর্ভুক্ত রয়েছে।

অনুচ্ছেদ গঠন

একটি Paragraph হল একটি StructuralElement যা একটি অনুচ্ছেদের প্রতিনিধিত্ব করে। এটিতে একটি নতুন লাইনের অক্ষর দিয়ে সমাপ্ত হওয়া বিষয়বস্তুর পরিসীমা রয়েছে৷ এটি নিম্নলিখিত বস্তু দ্বারা গঠিত:

  • ParagraphElement : একটি অনুচ্ছেদের মধ্যে বিষয়বস্তু বর্ণনা করে।
  • ParagraphStyle : একটি ঐচ্ছিক উপাদান যা স্পষ্টভাবে অনুচ্ছেদের জন্য শৈলী বৈশিষ্ট্য সেট করে।
  • Bullet : যদি অনুচ্ছেদটি একটি তালিকার অংশ হয়, একটি ঐচ্ছিক উপাদান যা বুলেটের স্পেসিফিকেশন প্রদান করে।

ParagraphElement একটি StructuralElement এর মত কিছু কাজ করে। বিষয়বস্তুর উপাদান প্রকারের একটি সেট (যেমন ColumnBreak এবং Equation ) তার নিজস্ব ParagraphElement ব্যক্তিগতকৃত করে, যেমনটি নিম্নলিখিত চিত্রে দেখানো হয়েছে:

অনুচ্ছেদের উপাদানগুলির গঠন।
চিত্র 4. অনুচ্ছেদের উপাদানগুলির গঠন।

একটি সম্পূর্ণ নথি কাঠামোর উদাহরণের জন্য, JSON ফর্ম্যাটে নথির উদাহরণ দেখুন৷ আউটপুটে আপনি অনেকগুলি মূল কাঠামোগত এবং বিষয়বস্তু উপাদান দেখতে পাবেন, সেইসাথে শুরু এবং শেষ সূচকগুলির ব্যবহার যেমন নিম্নলিখিত বিভাগে বর্ণিত হয়েছে।

টেক্সট রান

একটি TextRun হল একটি ParagraphElement যা একই পাঠ্য শৈলী সহ পাঠ্যের একটি সংলগ্ন স্ট্রিংকে উপস্থাপন করে। একটি অনুচ্ছেদে একাধিক টেক্সট রান থাকতে পারে কিন্তু টেক্সট রান কখনই অনুচ্ছেদের সীমানা অতিক্রম করে না। বিষয়বস্তু একটি নতুন লাইন অক্ষর পরে বিভক্ত করা হয় পৃথক টেক্সট রান গঠন. উদাহরণস্বরূপ, নিম্নলিখিত মত একটি ক্ষুদ্র নথি বিবেচনা করুন:

অনুচ্ছেদ এবং বুলেটযুক্ত তালিকা সহ ছোট নথি।
চিত্র 5. একটি ছোট নথি।

নিম্নলিখিত চিত্রটি দেখায় যে আপনি কীভাবে পূর্ববর্তী নথিতে অনুচ্ছেদের ক্রমটি কল্পনা করতে পারেন, প্রতিটির নিজস্ব TextRun এবং ঐচ্ছিক Bullet সেটিংস।

একটি টেক্সট রান গঠন.
চিত্র 6. একটি টেক্সট রানের গঠন।

অটোটেক্সট

AutoText হল একটি ParagraphElement যা পাঠ্যের একটি স্থানকে উপস্থাপন করে যা সময়ের সাথে পরিবর্তন হতে পারে এমন বিষয়বস্তুর সাথে গতিশীলভাবে প্রতিস্থাপিত হয়। ডক্সে, এটি পৃষ্ঠা নম্বরের জন্য ব্যবহৃত হয়।

শুরু এবং শেষ সূচী

আপনি যখন একটি নথির ট্যাবের বিষয়বস্তুতে আপডেট করেন, প্রতিটি আপডেট একটি অবস্থানে বা নথির মধ্যে একটি পরিসর জুড়ে হয়৷ এই অবস্থানগুলি এবং ব্যাপ্তিগুলি সূচী ব্যবহার করে নির্দিষ্ট করা হয়, যা একটি ধারণকৃত নথি বিভাগের মধ্যে একটি অফসেট উপস্থাপন করে। একটি সেগমেন্ট হল শরীর, শিরোনাম, পাদচরণ, বা পাদটীকা যেখানে কাঠামোগত বা বিষয়বস্তু উপাদান রয়েছে। একটি সেগমেন্টের মধ্যে থাকা উপাদানগুলির সূচীগুলি সেই সেগমেন্টের শুরুর সাথে আপেক্ষিক।

শরীরের বিষয়বস্তুর মধ্যে বেশিরভাগ উপাদানেরই শূন্য-ভিত্তিক startIndex এবং endIndex বৈশিষ্ট্য রয়েছে। এটি একটি উপাদানের সূচনা এবং শেষের অফসেট নির্দেশ করে, এটির আবদ্ধ অংশের শুরুর সাথে সম্পর্কিত। আপনার ব্যাচ ডক্স API কলগুলি কীভাবে অর্ডার করবেন সে সম্পর্কে আরও তথ্যের জন্য, ব্যাচ আপডেটগুলি দেখুন।

সূচীগুলি UTF-16 কোড ইউনিটে পরিমাপ করা হয়। এর মানে সারোগেট জোড়া দুটি সূচক গ্রাস করে। উদাহরণস্বরূপ, "গ্রিনিং ফেস" ইমোজি, 😄,টিকে \uD83D\uDE00 হিসাবে উপস্থাপন করা হয় এবং এটি দুটি সূচক ব্যবহার করে।

একটি নথির অংশের মধ্যে উপাদানগুলির জন্য, সূচীগুলি শরীরের বিষয়বস্তুর শুরু থেকে অফসেটগুলিকে উপস্থাপন করে, যা "মূল" উপাদান।

স্ট্রাকচারাল উপাদানগুলির জন্য "ব্যক্তিগতকরণ" প্রকারগুলি — SectionBreak , TableOfContents , Table , এবং Paragraph —-এ এই সূচীগুলি নেই কারণ তাদের আবদ্ধ StructuralElement এই ক্ষেত্রগুলি রয়েছে৷ এটি একটি ParagraphElement এ থাকা ব্যক্তিগতকরণের ধরনগুলির ক্ষেত্রেও সত্য, যেমন TextRun , AutoText এবং PageBreak

অ্যাক্সেস উপাদান

অনেক উপাদান documents.batchUpdate পদ্ধতিতে পরিবর্তনযোগ্য। উদাহরণস্বরূপ, InsertTextRequest ব্যবহার করে, আপনি পাঠ্য ধারণকারী যেকোনো উপাদানের বিষয়বস্তু পরিবর্তন করতে পারেন। একইভাবে, আপনি এক বা একাধিক উপাদানে থাকা পাঠ্যের পরিসরে বিন্যাস প্রয়োগ করতে UpdateTextStyleRequest ব্যবহার করতে পারেন।

নথির উপাদানগুলি পড়তে, সম্পূর্ণ নথির একটি JSON ডাম্প পেতে documents.get পদ্ধতিটি ব্যবহার করুন৷ তারপর আপনি পৃথক উপাদানের মান খুঁজে পেতে ফলাফল JSON পার্স করতে পারেন। আরও তথ্যের জন্য, JSON হিসাবে আউটপুট নথির বিষয়বস্তু দেখুন।

বিষয়বস্তু পার্সিং বিভিন্ন ব্যবহারের ক্ষেত্রে উপকারী হতে পারে। উদাহরণ স্বরূপ, একটি নথির তালিকাভুক্ত অ্যাপ্লিকেশন তালিকাভুক্ত নথি এটি খুঁজে পায়। এই অ্যাপটি একটি ডকুমেন্টের ট্যাবের শিরোনাম, রিভিশন আইডি এবং প্রারম্ভিক পৃষ্ঠা নম্বর বের করতে পারে, যেমনটি নিচের চিত্রে দেখানো হয়েছে:

একটি নথি ক্যাটালগ গঠন.
চিত্র 7. একটি নথি ক্যাটালগের গঠন।

যেহেতু এই সেটিংসগুলি স্পষ্টভাবে পড়ার জন্য কোনও পদ্ধতি নেই, তাই আপনার অ্যাপটিকে পুরো নথিটি পেতে হবে এবং তারপর এই মানগুলি বের করতে JSON পার্স করতে হবে৷

সম্পত্তির উত্তরাধিকার

একটি StructuralElement তার মূল বস্তু থেকে বৈশিষ্ট্য উত্তরাধিকারসূত্রে পেতে পারে। একটি বস্তুর বৈশিষ্ট্যগুলি, যা এটি সংজ্ঞায়িত করে এবং যা এটি উত্তরাধিকারসূত্রে পায়, তার চূড়ান্ত চাক্ষুষ চেহারা নির্ধারণ করে।

টেক্সট ক্যারেক্টার ফরম্যাটিং নির্ধারণ করে কিভাবে টেক্সট কোন ডকুমেন্টে রেন্ডার করা হয়, যেমন বোল্ড, ইটালিক এবং আন্ডারলাইন। আপনি যে বিন্যাসটি প্রয়োগ করেন তা অন্তর্নিহিত অনুচ্ছেদের TextStyle থেকে উত্তরাধিকারসূত্রে প্রাপ্ত ডিফল্ট বিন্যাসকে ওভাররাইড করে। বিপরীতভাবে, যে কোনো অক্ষর যার বিন্যাস আপনি সেট করেন না তা অনুচ্ছেদের শৈলী থেকে উত্তরাধিকার সূত্রে প্রাপ্ত হতে থাকে।

অনুচ্ছেদ বিন্যাস নির্ধারণ করে কিভাবে পাঠ্যের ব্লকগুলি একটি নথিতে রেন্ডার করা হয়, যেমন প্রান্তিককরণ, সীমানা এবং ইন্ডেন্টেশন। আপনি যে বিন্যাসটি প্রয়োগ করেন তা অন্তর্নিহিত ParagraphStyle থেকে উত্তরাধিকারসূত্রে পাওয়া ডিফল্ট বিন্যাসকে ওভাররাইড করে। বিপরীতভাবে, যে কোনো বিন্যাস বৈশিষ্ট্য যা আপনি সেট করেন না তা অনুচ্ছেদ শৈলী থেকে উত্তরাধিকার সূত্রে প্রাপ্ত হতে থাকে।