ویرایش و استایل دادن به متن

می‌توانید متن را با استفاده از محدوده‌های متنی که با نوع TextRange نشان داده می‌شوند، ویرایش و سبک دهید. TextRange قسمتی از متن را در یک شکل یا داخل یک سلول جدول نشان می دهد. فراخوانی getText() روی یک شکل یا سلول جدول، محدوده متنی را برمی گرداند که کل متن را پوشش می دهد.

اگر از روش‌هایی استفاده می‌کنید که نحوه تناسب متن را در یک شکل ویرایش می‌کنند، هر گونه تنظیمات تنظیم خودکار اعمال شده روی شکل غیرفعال می‌شود.

استفاده از محدوده متن

یک محدوده متنی دارای دو نمایه است که بخش متن تحت پوشش یک محدوده متن را مشخص می کند: نمایه شروع و نمایه پایان . شما می توانید این شاخص ها را با استفاده از توابع getStartIndex() و getEndIndex() تعیین کنید.

برای خواندن محتویات یک محدوده متنی، از توابع asString() یا asRenderedString() استفاده کنید.

برای بازیابی یک زیر محدوده از داخل یک محدوده متنی، از تابع getRange() استفاده کنید.

اسکریپت زیر یک کادر متنی در اسلاید اول ایجاد می کند و محتوای متن آن را روی "Hello world!" تنظیم می کند. سپس زیر محدوده ای را بازیابی می کند که فقط "Hello" را در بر می گیرد.

slides/style/style.gs
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);
}

محدوده متنی که توسط یک سلول شکل یا جدول برگردانده می شود، همیشه کل متن را پوشش می دهد، حتی اگر متن درج و حذف شود. بنابراین مثال بالا دستورات log زیر را تولید می کند:

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

درج و حذف متن

همچنین می‌توانید اشکال متن و سلول‌های جدول را با استفاده از محدوده‌های متن وارد و حذف کنید.

  • insertText() و appendText() به شما امکان می دهند متن را وارد کنید.
  • setText() متن یک محدوده متن را با متن ارائه شده جایگزین می کند.
  • clear() متن را از داخل یک محدوده متن حذف می کند.

اسکریپت زیر استفاده از این توابع را نشان می دهد:

slides/style/style.gs
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!" تنظیم می کند. سپس کاراکترهای 6 تا 11 ("جهان") را حذف می کند و به جای آن متن "galaxy" را در شاخص 6 درج می کند. مثال بالا دستور log زیر را تولید می کند:

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

جستجو و جایگزین کنید

از تابع replaceAllText() در ارائه یا صفحه برای انجام یافتن سراسری و جایگزینی در کل ارائه یا یک صفحه خاص استفاده کنید.

تابع find() در TextRange نمونه های یک رشته را در محدوده برمی گرداند. می توان از آن به همراه setText() برای انجام Find-and-Replace در یک شکل یا سلول جدول استفاده کرد.

پاراگراف ها، موارد فهرست و اجراها

TextRange توابعی را برای برگرداندن مجموعه های مفید موجودیت های متنی ارائه می دهد. برخی از این توابع عبارتند از:

  • getParagraphs(), که تمام پاراگراف هایی را که با محدوده متن همپوشانی دارند را ارائه می دهد. پاراگراف دنباله ای از متن است که با کاراکتر خط جدید "\n" خاتمه می یابد.
  • getListParagraphs(), که آیتم های لیست را در محدوده متن فعلی برمی گرداند.
  • getRuns(), که اجرای متنی را فراهم می کند که با محدوده متن فعلی همپوشانی دارند. اجرای متن بخشی از متن است که در آن همه کاراکترها دارای سبک متن یکسانی هستند.

سبک سازی متن

سبک متن، رندر کاراکترهای متن را در ارائه شما، از جمله فونت، رنگ، و لینک سازی تعیین می کند.

تابع getTextStyle() یک محدوده متنی یک شی TextStyle را ارائه می دهد که برای استایل دادن به متن استفاده می شود. شی TextStyle همان متنی را پوشش می دهد که TextRange والد آن است.

slides/style/style.gs
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" تنظیم می کند. سپس متن "جهان!" را اضافه می کند. متن جدید اضافه شده پررنگ است، به www.example.com پیوند داده شده است و رنگ آن قرمز تنظیم شده است.

هنگام خواندن سبک‌ها، اگر محدوده دارای مقادیر متعددی برای استایل باشد، تابع null برمی‌گرداند. بنابراین نمونه بالا عبارات log زیر را تولید می کند:

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

بسیاری از سبک های دیگر نیز وجود دارند که می توانند روی متن اعمال شوند. جزئیات بیشتر را می توان در مستندات مرجع TextStyle یافت.

سبک پاراگراف

سبک‌های پاراگراف برای کل پاراگراف‌ها اعمال می‌شود و شامل مواردی مانند چینش متن و فاصله بین خطوط می‌شود. تابع getParagraphStyle() در TextRange یک آبجکت ParagraphStyle را برای استایل دادن به تمام پاراگراف هایی که با محدوده متن والد همپوشانی دارند ارائه می کند.

مثال زیر یک کادر متنی در اسلاید اول با چهار پاراگراف ایجاد می کند، سپس سه پاراگراف اول را در مرکز تراز می کند.

slides/style/style.gs
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 می توان برای استایل دادن به تمام پاراگراف هایی که با محدوده متن اصلی همپوشانی دارند استفاده کرد.

slides/style/style.gs
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