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

টেক্সট রেঞ্জ ব্যবহার করে টেক্সট সম্পাদনা ও স্টাইল করুন, যা TextRange টাইপ দ্বারা উপস্থাপিত হয়। একটি TextRange কোনো শেপ বা টেবিল সেলের ভেতরের টেক্সটের একটি অংশকে বোঝায়। কোনো শেপ বা টেবিল সেলের উপর getText কল করলে একটি টেক্সট রেঞ্জ রিটার্ন হয়, যা সম্পূর্ণ টেক্সটটিকে অন্তর্ভুক্ত করে।

আপনি যদি এমন কোনো পদ্ধতি ব্যবহার করেন যা কোনো আকৃতির মধ্যে লেখার বিন্যাস পরিবর্তন করে, তাহলে আকৃতিটিতে প্রয়োগ করা যেকোনো স্বয়ংক্রিয় সামঞ্জস্য (autofit) সেটিংস নিষ্ক্রিয় হয়ে যায়।

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

একটি টেক্সট রেঞ্জের দুটি ইনডেক্স থাকে যা এর অন্তর্ভুক্ত টেক্সটের অংশকে চিহ্নিত করে: স্টার্ট ইনডেক্স এবং এন্ড ইনডেক্সgetStartIndex এবং getEndIndex ফাংশন ব্যবহার করে এই ইনডেক্সগুলো নির্ধারণ করা যায়।

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

কোনো টেক্সট রেঞ্জের বিষয়বস্তু পড়ার জন্য asString বা asRenderedString ফাংশনগুলো ব্যবহার করুন।

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

নিম্নলিখিত স্ক্রিপ্টটি প্রথম স্লাইডে একটি টেক্সট বক্স তৈরি করে এবং এর টেক্সট কন্টেন্ট "Hello world!"-এ সেট করে। এরপর এটি একটি সাবরেঞ্জ পুনরুদ্ধার করে যা শুধুমাত্র "Hello" অংশটি জুড়ে থাকে।

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);
}

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

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

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

সম্পূর্ণ প্রেজেন্টেশন বা কোনো নির্দিষ্ট পৃষ্ঠাজুড়ে বৈশ্বিকভাবে অনুসন্ধান ও প্রতিস্থাপন করার জন্য প্রেজেন্টেশন বা পৃষ্ঠার replaceAllText ফাংশনটি ব্যবহার করুন।

TextRange-এর find ফাংশনটি ওই রেঞ্জের মধ্যে থাকা কোনো স্ট্রিং-এর উপস্থিতিগুলো ফেরত দেয়। কোনো শেপ বা টেবিল সেলের মধ্যে ফাইন্ড-অ্যান্ড-রিপ্লেস করার জন্য এটি setText সাথে একত্রে ব্যবহার করা যায়।

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

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