Mengedit dan menata gaya teks

Anda dapat mengedit dan menata gaya teks menggunakan rentang teks, yang diwakili oleh Jenis TextRange. TextRange mewakili segmen teks dalam sebuah bentuk atau dalam sel tabel. Memanggil getText() pada bentuk atau sel tabel akan menampilkan rentang teks yang memenuhi seluruh teks.

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

Menggunakan rentang teks

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

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

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

Skrip berikut membuat kotak teks pada {i>slide<i} pertama dan mengatur konten teksnya menjadi "Hello world!". Metode ini kemudian mengambil subrentang yang hanya mencakup kata "Hello".

slide/gaya/gaya.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 dikembalikan oleh bentuk atau sel tabel akan selalu mencakup seluruh teks, bahkan jika teks dimasukkan 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:

slide/gaya/gaya.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 {i>slide<i} pertama dan mengatur isi teksnya menjadi "Hello world!". Kemudian 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 temukan dan ganti di seluruh presentasi atau laman tertentu.

Fungsi find() pada TextRange menampilkan instance string dalam {i>range<i}. Alat ini dapat digunakan bersama dengan setText() untuk melakukan cari dan ganti di dalam {i>shape<i} atau sel tabel.

Paragraf, item daftar, dan run

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. J adalah urutan teks yang diakhiri dengan karakter baris baru, "\n".
  • getListParagraphs(), yang menampilkan item daftar dalam rentang teks saat ini.
  • getRuns(), yang menyediakan operasi teks yang tumpang-tindih dengan rentang teks saat ini. J text run adalah segmen teks yang semua karakternya memiliki teks yang sama gaya.

Gaya teks

Gaya teks menentukan rendering karakter teks dalam presentasi Anda, termasuk {i>font<i}, warna, dan {i>hyperlinking<i}.

Fungsi getTextStyle() rentang teks menyediakan objek TextStyle yang digunakan untuk untuk menata gaya teks. Objek TextStyle mencakup teks yang sama dengan induknya, TextRange.

slide/gaya/gaya.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 pertama-tama membuat kotak teks pada {i>slide<i} pertama dan mengaturnya menjadi "Hello". Kemudian ia menambahkan teks "world!". Teks yang baru ditambahkan dicetak tebal, ditautkan ke www.example.com, dan warnanya disetel merah.

Saat membaca gaya, fungsi menampilkan null jika rentang memiliki beberapa nilai untuk gaya. 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 ke teks. Rincian lebih lanjut dapat yang ditemukan dalam dokumentasi referensi TextStyle.

Gaya paragraf

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

Contoh berikut membuat kotak teks pada {i>slide<i} pertama dengan empat paragraf, lalu sejajarkan ke tengah pada tiga paragraf pertama.

slide/gaya/gaya.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 visual daftar

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

slide/gaya/gaya.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 {i>slide<i} pertama, yang berisi empat paragraf: paragraf kedua diindentasi satu kali dan paragraf ketiga diindentasi dua kali. Setelah itu, tindakan ini akan menerapkan preset daftar ke semua paragraf. Terakhir, setiap {i>nesting level <i}paragraf akan dicatat. (Tingkat tingkatan 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