টেক্সট সম্পাদনা এবং স্টাইল করুন

টেক্সট রেঞ্জ ব্যবহার করে টেক্সট সম্পাদনা এবং স্টাইল করুন, যা TextRange টাইপ দ্বারা প্রতিনিধিত্ব করা হয়। একটি TextRange একটি আকৃতির মধ্যে বা একটি টেবিল কোষের মধ্যে টেক্সটের একটি অংশকে প্রতিনিধিত্ব করে। একটি আকৃতি বা টেবিল কোষে getText কল করলে একটি টেক্সট রেঞ্জ ফেরত আসে যা সম্পূর্ণ টেক্সটকে কভার করে।

যদি আপনি এমন পদ্ধতি ব্যবহার করেন যা কোনও আকৃতির মধ্যে টেক্সট কীভাবে ফিট করে তা সম্পাদনা করে, তাহলে আকৃতিতে প্রয়োগ করা যেকোনো অটোফিট সেটিংস নিষ্ক্রিয় করা হবে।

টেক্সট রেঞ্জ ব্যবহার করুন

একটি টেক্সট রেঞ্জে দুটি সূচী থাকে যা একটি টেক্সট রেঞ্জ দ্বারা আচ্ছাদিত টেক্সটের অংশকে সীমাবদ্ধ করে: start index এবং end indexgetStartIndex এবং getEndIndex ফাংশন ব্যবহার করে এই সূচীগুলি নির্ধারণ করুন।

একটি টেক্সট রেঞ্জের শুরুর সূচকটি অন্তর্ভুক্ত, এবং এর শেষ সূচকটি এক্সক্লুসিভ। উভয় সূচকই শূন্য ভিত্তিক।

একটি টেক্সট রেঞ্জের বিষয়বস্তু পড়তে, asString অথবা asRenderedString ফাংশন ব্যবহার করুন।

একটি টেক্সট রেঞ্জের মধ্যে থেকে একটি সাবরেঞ্জ পুনরুদ্ধার করতে, getRange ফাংশনটি ব্যবহার করুন।

নিচের স্ক্রিপ্টটি প্রথম স্লাইডে একটি টেক্সট বক্স তৈরি করে এবং এর টেক্সট কন্টেন্ট "হ্যালো ওয়ার্ল্ড!" এ সেট করে। এরপর এটি একটি সাবরেঞ্জ পুনরুদ্ধার করে যা কেবল "হ্যালো" জুড়ে বিস্তৃত।

স্লাইড/স্টাইল/স্টাইল.জিএস
try {
  // Get the first slide of active presentation
  const slide = SlidesApp.getActivePresentation().getSlides()[0];
  // Insert shape in the slide with dimensions
  const shape = slide.insertShape(
    SlidesApp.ShapeType.TEXT_BOX,
    100,
    200,
    300,
    60,
  );
  const textRange = shape.getText();
  // Set text in TEXT_BOX
  textRange.setText("Hello world!");
  console.log(
    `Start: ${textRange.getStartIndex()}; End: ${textRange.getEndIndex()}; Content: ${textRange.asString()}`,
  );
  const subRange = textRange.getRange(0, 5);
  console.log(
    `Sub-range Start: ${subRange.getStartIndex()}; Sub-range End: ${subRange.getEndIndex()}; Sub-range Content: ${subRange.asString()}`,
  );
} catch (err) {
  // TODO (developer) - Handle exception
  console.log("Failed with an error %s ", err.message);
}

একটি আকৃতি বা টেবিল সেল দ্বারা প্রদত্ত টেক্সট রেঞ্জ সর্বদা সম্পূর্ণ টেক্সটকে কভার করে, এমনকি যদি টেক্সট সন্নিবেশ করানো হয় এবং মুছে ফেলা হয়। সুতরাং এই উদাহরণটি নিম্নলিখিত লগ স্টেটমেন্ট তৈরি করে:

Start: 0; End: 13; Content: Hello world!
Start: 0; End: 5; Content: Hello

টেক্সট ঢোকান এবং মুছুন

আপনি টেক্সট রেঞ্জ ব্যবহার করে আকার এবং টেবিল কোষে টেক্সট সন্নিবেশ করতে এবং মুছে ফেলতে পারেন।

  • insertText এবং appendText আপনাকে টেক্সট সন্নিবেশ করতে দেয়।
  • setText একটি টেক্সট রেঞ্জের টেক্সটকে প্রদত্ত টেক্সট দিয়ে প্রতিস্থাপন করে।
  • clear একটি টেক্সট রেঞ্জের মধ্যে থেকে টেক্সট মুছে ফেলে।

নিম্নলিখিত স্ক্রিপ্টটি এই ফাংশনগুলির ব্যবহার প্রদর্শন করে:

স্লাইড/স্টাইল/স্টাইল.জিএস
try {
  // Get the first slide of active presentation
  const slide = SlidesApp.getActivePresentation().getSlides()[0];
  // Insert shape in the slide with dimensions
  const shape = slide.insertShape(
    SlidesApp.ShapeType.TEXT_BOX,
    100,
    200,
    300,
    60,
  );
  const textRange = shape.getText();
  textRange.setText("Hello world!");
  textRange.clear(6, 11);
  // Insert text in TEXT_BOX
  textRange.insertText(6, "galaxy");
  console.log(
    `Start: ${textRange.getStartIndex()}; End: ${textRange.getEndIndex()}; Content: ${textRange.asString()}`,
  );
} catch (err) {
  // TODO (developer) - Handle exception
  console.log("Failed with an error %s ", err.message);
}

এই স্ক্রিপ্টটি প্রথম স্লাইডে একটি টেক্সট বক্স তৈরি করে এবং এর টেক্সট কন্টেন্ট "হ্যালো ওয়ার্ল্ড!" এ সেট করে। এরপর এটি ৬ থেকে ১১ অক্ষর ("ওয়ার্ল্ড") মুছে ফেলে এবং এর পরিবর্তে ৬ নম্বর ইনডেক্সে "গ্যালাক্সি" টেক্সট সন্নিবেশ করায়। এই উদাহরণটি নিম্নলিখিত লগ স্টেটমেন্ট তৈরি করে:

Start: 0; End: 14; Content: Hello galaxy!

অনুসন্ধান করুন এবং প্রতিস্থাপন করুন

সমগ্র উপস্থাপনা বা একটি নির্দিষ্ট পৃষ্ঠা জুড়ে একটি বিশ্বব্যাপী অনুসন্ধান এবং প্রতিস্থাপন সম্পাদন করতে উপস্থাপনা বা পৃষ্ঠায় replaceAllText ফাংশনটি ব্যবহার করুন।

TextRange-এর find ফাংশনটি রেঞ্জের মধ্যে একটি স্ট্রিংয়ের ইনস্ট্যান্স ফেরত দেয়। এটি setText এর সাথে একটি আকৃতি বা টেবিল কোষের মধ্যে find-and-replace করার জন্য ব্যবহার করা যেতে পারে।

অনুচ্ছেদ, তালিকার আইটেম এবং রান

TextRange টেক্সট এন্টিটির দরকারী সংগ্রহ ফেরত দেওয়ার জন্য ফাংশন প্রদান করে। এই ফাংশনগুলির মধ্যে কিছু হল:

  • getParagraphs, যা টেক্সট রেঞ্জকে ওভারল্যাপ করে এমন সমস্ত অনুচ্ছেদ প্রদান করে। একটি অনুচ্ছেদ হল টেক্সটের একটি ক্রম যা নতুন লাইন অক্ষর "\n" দিয়ে শেষ হয়।
  • getListParagraphs, যা বর্তমান টেক্সট রেঞ্জের তালিকা আইটেমগুলি ফেরত দেয়।
  • getRuns, যা বর্তমান টেক্সট রেঞ্জকে ওভারল্যাপ করে এমন টেক্সট রান প্রদান করে। টেক্সট রান হলো টেক্সটের এমন একটি অংশ যেখানে সমস্ত অক্ষরের টেক্সট স্টাইল একই।

টেক্সট স্টাইলিং

টেক্সট স্টাইল আপনার উপস্থাপনায় টেক্সট অক্ষরের রেন্ডারিং নির্ধারণ করে, যার মধ্যে ফন্ট, রঙ এবং হাইপারলিঙ্কিং অন্তর্ভুক্ত।

একটি টেক্সট রেঞ্জের getTextStyle ফাংশন টেক্সট স্টাইল করার জন্য ব্যবহৃত একটি TextStyle অবজেক্ট প্রদান করে। TextStyle অবজেক্টটি তার প্যারেন্ট TextRange মতো একই টেক্সট কভার করে।

স্লাইড/স্টাইল/স্টাইল.জিএস
try {
  // Get the first slide of active presentation
  const slide = SlidesApp.getActivePresentation().getSlides()[0];
  // Insert shape in the slide with dimensions
  const shape = slide.insertShape(
    SlidesApp.ShapeType.TEXT_BOX,
    100,
    200,
    300,
    60,
  );
  const textRange = shape.getText();
  // Set text in TEXT_BOX
  textRange.setText("Hello ");
  // Append text in TEXT_BOX
  const insertedText = textRange.appendText("world!");
  // Style the text with url,bold
  insertedText
    .getTextStyle()
    .setBold(true)
    .setLinkUrl("www.example.com")
    .setForegroundColor("#ff0000");
  const helloRange = textRange.getRange(0, 5);
  console.log(
    `Text: ${helloRange.asString()}; Bold: ${helloRange.getTextStyle().isBold()}`,
  );
  console.log(
    `Text: ${insertedText.asString()}; Bold: ${insertedText.getTextStyle().isBold()}`,
  );
  console.log(
    `Text: ${textRange.asString()}; Bold: ${textRange.getTextStyle().isBold()}`,
  );
} catch (err) {
  // TODO (developer) - Handle exception
  console.log("Failed with an error %s ", err.message);
}

পূর্ববর্তী উদাহরণটি প্রথমে প্রথম স্লাইডে একটি টেক্সট বক্স তৈরি করে এবং এর কন্টেন্ট "Hello " তে সেট করে। তারপর এটি "world!" লেখাটি যুক্ত করে। নতুন যুক্ত করা টেক্সটটি বোল্ড করা হয়েছে, www.example.com এর সাথে লিঙ্ক করা হয়েছে এবং এর রঙ লাল করা হয়েছে।

স্টাইল পড়ার সময়, যদি রেঞ্জের স্টাইলের জন্য একাধিক মান থাকে তবে ফাংশনটি null রিটার্ন করে। সুতরাং এই নমুনাটি নিম্নলিখিত লগ স্টেটমেন্ট তৈরি করে:

Text: Hello; Bold: false
Text: world!; Bold: true
Text: Hello world!; Bold: null

টেক্সটে আরও অনেক স্টাইল প্রয়োগ করা যেতে পারে। আরও বিস্তারিত তথ্য TextStyle রেফারেন্স ডকুমেন্টেশনে পাওয়া যাবে।

অনুচ্ছেদ স্টাইলিং

অনুচ্ছেদ শৈলী সম্পূর্ণ অনুচ্ছেদের ক্ষেত্রে প্রযোজ্য, এবং টেক্সট অ্যালাইনমেন্ট এবং লাইন স্পেসিংয়ের মতো জিনিসগুলি অন্তর্ভুক্ত করে। TextRange এর getParagraphStyle ফাংশনটি প্যারেন্ট টেক্সট রেঞ্জকে ওভারল্যাপ করে এমন সমস্ত অনুচ্ছেদ স্টাইল করার জন্য একটি ParagraphStyle অবজেক্ট প্রদান করে।

নিচের উদাহরণটি প্রথম স্লাইডে চারটি অনুচ্ছেদ সহ একটি টেক্সট বক্স তৈরি করে, তারপর প্রথম তিনটি অনুচ্ছেদকে কেন্দ্র করে সারিবদ্ধ করে।

স্লাইড/স্টাইল/স্টাইল.জিএস
try {
  // Get the first slide of active presentation
  const slide = SlidesApp.getActivePresentation().getSlides()[0];
  // Insert shape in the slide with dimensions
  const shape = slide.insertShape(
    SlidesApp.ShapeType.TEXT_BOX,
    50,
    50,
    300,
    300,
  );
  const textRange = shape.getText();
  // Set the text in the shape/TEXT_BOX
  textRange.setText("Paragraph 1\nParagraph2\nParagraph 3\nParagraph 4");
  const paragraphs = textRange.getParagraphs();
  // Style the paragraph alignment center.
  for (let i = 0; i <= 3; i++) {
    const paragraphStyle = paragraphs[i].getRange().getParagraphStyle();
    paragraphStyle.setParagraphAlignment(SlidesApp.ParagraphAlignment.CENTER);
  }
} catch (err) {
  // TODO (developer) - Handle exception
  console.log("Failed with an error %s ", err.message);
}

তালিকার স্টাইলিং

ParagraphStyle এর মতো, ListStyle এমন সমস্ত অনুচ্ছেদ স্টাইল করার জন্য ব্যবহার করা যেতে পারে যা মূল পাঠ্য পরিসরকে ওভারল্যাপ করে।

স্লাইড/স্টাইল/স্টাইল.জিএস
try {
  // Get the first slide of active presentation
  const slide = SlidesApp.getActivePresentation().getSlides()[0];
  // Insert shape in the slide with dimensions
  const shape = slide.insertShape(
    SlidesApp.ShapeType.TEXT_BOX,
    50,
    50,
    300,
    300,
  );
  // Add and style the list
  const textRange = shape.getText();
  textRange
    .appendText("Item 1\n")
    .appendText("\tItem 2\n")
    .appendText("\t\tItem 3\n")
    .appendText("Item 4");
  // Preset patterns of glyphs for lists in text.
  textRange
    .getListStyle()
    .applyListPreset(SlidesApp.ListPreset.DIGIT_ALPHA_ROMAN);
  const paragraphs = textRange.getParagraphs();
  for (let i = 0; i < paragraphs.length; i++) {
    const listStyle = paragraphs[i].getRange().getListStyle();
    console.log(
      `Paragraph ${i + 1}'s nesting level: ${listStyle.getNestingLevel()}`,
    );
  }
} catch (err) {
  // TODO (developer) - Handle exception
  console.log("Failed with an error %s ", err.message);
}

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

Paragraph 1's nesting level: 0
Paragraph 2's nesting level: 1
Paragraph 3's nesting level: 2
Paragraph 4's nesting level: 0