Mengedit dan menata gaya teks

Anda dapat mengedit dan memberi gaya teks menggunakan rentang teks, yang direpresentasikan oleh jenis TextRange. TextRange mewakili segmen teks dalam suatu bentuk atau dalam sel tabel. Memanggil getText() pada bentuk atau sel tabel akan menampilkan rentang teks yang mencakup seluruh teks.

Jika Anda menggunakan metode yang mengedit cara teks dipaskan dalam bentuk, setelan paskan otomatis yang diterapkan ke bentuk akan dinonaktifkan.

Menggunakan rentang teks

Rentang teks memiliki dua indeks yang membatasi segmen teks yang dicakup oleh suatu rentang teks: indeks awal dan indeks akhir. Anda dapat menentukan indeks ini menggunakan fungsi getStartIndex() dan getEndIndex().

Untuk membaca konten rentang teks, gunakan fungsi asString() atau asRenderedString().

Untuk mengambil subrentang dari dalam rentang teks, gunakan fungsi getRange().

Skrip berikut membuat kotak teks pada slide pertama dan menetapkan konten teksnya ke "Hello world!". Tindakan ini kemudian mengambil subrentang yang hanya mencakup "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);
}

Rentang teks yang ditampilkan oleh bentuk atau sel tabel akan selalu mencakup seluruh teks, meskipun teks disisipkan dan dihapus. Jadi, contoh di atas menghasilkan laporan log berikut:

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

Menyisipkan dan menghapus teks

Anda juga dapat menyisipkan dan menghapus bentuk teks dan sel tabel menggunakan rentang teks.

  • insertText() dan appendText() memungkinkan Anda menyisipkan teks.
  • setText() mengganti teks rentang teks dengan teks yang disediakan.
  • clear() menghapus teks dari dalam rentang teks.

Skrip berikut menunjukkan penggunaan fungsi ini:

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

Skrip ini membuat kotak teks pada slide pertama dan menetapkan konten teksnya ke "Hello world!". Kemudian, kode ini menghapus karakter 6 sampai 11 ("dunia"), dan menyisipkan teks "galaksi" pada indeks 6. Contoh di atas menghasilkan laporan log berikut:

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

Telusuri dan ganti

Gunakan fungsi replaceAllText() pada presentasi atau halaman untuk melakukan cari dan penggantian global di seluruh presentasi atau halaman tertentu.

Fungsi find() pada TextRange menampilkan instance string dalam rentang. Fungsi ini dapat digunakan bersama dengan setText() untuk melakukan pencarian dan penggantian dalam bentuk atau sel tabel.

Paragraf, item daftar, dan operasi

TextRange menyediakan fungsi untuk menampilkan koleksi entity teks yang berguna. Beberapa fungsi ini mencakup:

  • getParagraphs(), yang menyediakan semua paragraf yang tumpang-tindih dengan rentang teks. Paragraf adalah urutan teks yang diakhiri dengan karakter baris baru, "\n".
  • getListParagraphs(), yang menampilkan item daftar dalam rentang teks saat ini.
  • getRuns(), yang menyediakan teks yang tumpang-tindih dengan rentang teks saat ini. Operasi teks adalah segmen teks yang semua karakternya memiliki gaya teks yang sama.

Gaya teks

Gaya teks menentukan rendering karakter teks dalam presentasi Anda, termasuk font, warna, dan pembuatan hyperlink.

Fungsi getTextStyle() dari rentang teks menyediakan objek TextStyle yang digunakan untuk menata gaya teks. Objek TextStyle mencakup teks yang sama dengan induknya, 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);
}

Contoh di atas terlebih dahulu membuat kotak teks pada slide pertama dan menetapkan kontennya ke "Hello ". Kemudian teks "world!" ditambahkan. Teks yang baru ditambahkan akan dicetak tebal, ditautkan ke www.example.com, dan warnanya disetel ke merah.

Saat membaca gaya, fungsi ini akan menampilkan null jika rentang memiliki beberapa nilai untuk gaya tersebut. Jadi, contoh di atas menghasilkan laporan log berikut:

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

Ada banyak gaya lain yang dapat diterapkan pada teks. Detail selengkapnya dapat ditemukan dalam dokumentasi referensi TextStyle.

Gaya paragraf

Gaya paragraf berlaku untuk seluruh paragraf, dan mencakup hal-hal seperti perataan teks dan spasi baris. Fungsi getParagraphStyle() di TextRange menyediakan objek ParagraphStyle untuk menata gaya semua paragraf yang tumpang-tindih dengan rentang teks induk.

Contoh berikut membuat kotak teks pada slide pertama dengan empat paragraf, lalu meratakan tengah tiga paragraf pertama.

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

Gaya daftar

Serupa dengan ParagraphStyle, ListStyle dapat digunakan untuk menata gaya semua paragraf yang tumpang-tindih dengan rentang teks induk.

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

Contoh di atas membuat kotak teks pada slide pertama, yang berisi empat paragraf: paragraf kedua diindentasi satu kali dan paragraf ketiga diindentasi dua kali. Kemudian menerapkan preset daftar ke semua paragraf. Terakhir, setiap tingkat bertingkat paragraf di log. (Tingkat penyusunan bertingkat paragraf berasal dari jumlah tab sebelum teks paragraf.) Jadi, skrip di atas menghasilkan laporan log berikut:

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