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

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

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

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

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

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

document: {
    body: ... ,
    documentStyle: ... ,
    lists: ... ,
    documentId: ... ,
    namedStyles: ... ,
    revisionId: ... ,
    title: ...
}

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

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

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

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

গঠনগত উপাদান

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

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

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

অনুচ্ছেদ গঠন

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

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

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

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

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

টেক্সট রান

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

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

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

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

স্বয়ংক্রিয় বার্তা

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 হিসাবে আউটপুট নথির বিষয়বস্তু দেখুন।

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

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

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

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

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

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

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