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

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

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

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

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

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

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

ট্যাব

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

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

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

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

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

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

শরীরের উপাদানের গঠন।
চিত্র ২। শরীরের উপাদানের গঠন।

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

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

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

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

অনুচ্ছেদের গঠন

একটি Paragraph হল একটি StructuralElement যা একটি অনুচ্ছেদকে প্রতিনিধিত্ব করে। এতে বিভিন্ন ধরণের কন্টেন্ট থাকে যা একটি নতুন লাইন অক্ষর দিয়ে শেষ হয়। এটি নিম্নলিখিত অবজেক্টগুলি দিয়ে তৈরি:

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

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

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

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

টেক্সট রান

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

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

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

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

অটোটেক্সট

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

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

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

বডি কন্টেন্টের মধ্যে থাকা বেশিরভাগ এলিমেন্টের শূন্য-ভিত্তিক 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 হিসাবে দেখুন।

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

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

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

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

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

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

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