Mengedit dan mengatur gaya teks

Edit dan beri gaya teks menggunakan rentang teks, yang diwakili oleh jenis TextRange. TextRange mewakili segmen teks dalam 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 sesuai dengan bentuk, setelan autofit yang diterapkan ke bentuk akan dinonaktifkan.

Menggunakan rentang teks

Rentang teks memiliki dua indeks yang membatasi segmen teks yang tercakup dalam rentang teks: indeks awal dan indeks akhir. Tentukan indeks ini menggunakan fungsi getStartIndex dan getEndIndex.

Indeks awal rentang teks bersifat inklusif, dan indeks akhirnya bersifat eksklusif. Kedua indeks berbasis nol.

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 di slide pertama dan menetapkan konten teksnya ke "Hello world!". Kemudian, skrip ini 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 selalu mencakup seluruh teks, meskipun teks disisipkan dan dihapus. Jadi, contoh ini menghasilkan pernyataan log berikut:

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

Menyisipkan dan menghapus teks

Anda dapat menyisipkan dan menghapus teks dalam bentuk 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 di slide pertama dan menetapkan konten teksnya ke "Hello world!". Kemudian, skrip ini menghapus karakter 6 hingga 11 ("world"), dan menyisipkan teks "galaxy" pada indeks 6. Contoh ini menghasilkan pernyataan log berikut:

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

Penelusuran dan penggantian

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

Fungsi find di TextRange menampilkan instance string dalam rentang. Fungsi ini dapat digunakan bersama dengan setText untuk melakukan penelusuran dan penggantian dalam bentuk atau sel tabel.

Paragraf, item daftar, dan run

TextRange menyediakan fungsi untuk menampilkan kumpulan entitas 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 run teks yang tumpang-tindih dengan rentang teks saat ini. Run 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 hyperlink.

Fungsi getTextStyle dari rentang teks menyediakan objek TextStyle yang digunakan untuk memberi gaya teks. Objek TextStyle mencakup teks yang sama dengan TextRange induknya.

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 sebelumnya pertama-tama membuat kotak teks di slide pertama dan menetapkan kontennya ke "Hello ". Kemudian, contoh ini menambahkan teks "world!". Teks yang baru ditambahkan dicetak tebal, ditautkan ke www.example.com, dan warnanya ditetapkan ke merah.

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

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

Ada banyak gaya lain yang dapat diterapkan ke 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 ParagraphStyle objek untuk memberi gaya pada semua paragraf yang tumpang-tindih dengan rentang teks induk.

Contoh berikut membuat kotak teks di slide pertama dengan empat paragraf, lalu menengahkan 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

Mirip dengan ParagraphStyle, ListStyle dapat digunakan untuk memberi gaya pada 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 sebelumnya membuat kotak teks di slide pertama, yang berisi empat paragraf: paragraf kedua diberi indentasi satu kali dan paragraf ketiga diberi indentasi dua kali. Kemudian, contoh ini menerapkan preset daftar ke semua paragraf. Terakhir, tingkat tingkatan setiap paragraf dicatat. Tingkat tingkatan paragraf berasal dari jumlah tab sebelum teks paragraf. Jadi, skrip ini menghasilkan pernyataan 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