Chỉnh sửa và tạo kiểu cho văn bản

Bạn có thể chỉnh sửa và tạo kiểu cho văn bản bằng cách sử dụng dải văn bản, được biểu thị bằng giá trị Loại TextRange. TextRange đại diện cho một đoạn văn bản trong một hình dạng hoặc trong một ô của bảng. Gọi getText() trên một hình dạng hoặc ô trong bảng sẽ trả về một phạm vi văn bản bao gồm toàn bộ văn bản.

Nếu bạn dùng các phương thức chỉnh sửa cách văn bản vừa với một hình dạng, thì mọi chế độ cài đặt tự động điều chỉnh được áp dụng cho hình dạng đều bị vô hiệu hoá.

Sử dụng dải ô văn bản

Một dải ô văn bản có 2 chỉ mục phân cách đoạn văn bản nằm trong phạm vi văn bản: chỉ mục bắt đầuchỉ mục kết thúc. Bạn có thể xác định các chỉ mục này bằng cách sử dụng hàm getStartIndex()getEndIndex().

Để đọc nội dung của một dải ô văn bản, hãy dùng asString() hoặc Hàm asRenderedString().

Để truy xuất một dải ô phụ trong một dải ô văn bản, hãy dùng hàm getRange().

Tập lệnh sau đây sẽ tạo một hộp văn bản trên trang trình bày đầu tiên và thiết lập nội dung văn bản của hộp văn bản đó thành "Hello world!". Sau đó, ứng dụng sẽ truy xuất một dải ô con chỉ mở rộng dòng chữ "Hello".

trang trình bày/kiểu/kiểu.g
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);
}

Phạm vi văn bản được trả về bởi một hình dạng hoặc ô bảng sẽ luôn bao gồm toàn bộ văn bản, ngay cả khi văn bản được chèn và xoá. Ví dụ trên tạo ra các câu lệnh nhật ký sau:

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

Chèn và xoá văn bản

Bạn cũng có thể chèn và xoá các hình dạng văn bản cũng như ô trong bảng bằng cách sử dụng dải văn bản.

  • insertText()appendText() cho phép bạn chèn văn bản.
  • setText() thay thế văn bản của dải ô văn bản bằng văn bản được cung cấp.
  • clear() xoá văn bản trong một dải ô văn bản.

Tập lệnh sau đây minh hoạ cách sử dụng các hàm này:

trang trình bày/kiểu/kiểu.g
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);
}

Tập lệnh này sẽ tạo một hộp văn bản trên trang trình bày đầu tiên và thiết lập nội dung văn bản của hộp văn bản đó thành "Hello world!". Sau đó, thao tác này sẽ xoá các ký tự từ 6 đến 11 ("thế giới") và chèn văn bản "thiên hà" tại chỉ mục 6. Ví dụ trên tạo ra câu lệnh nhật ký sau:

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

Tìm kiếm và thay thế

Dùng hàm replaceAllText() trên bản trình bày hoặc trang để thực hiện lệnh chung tìm và thay thế trên toàn bộ bản trình bày hoặc một trang cụ thể.

Hàm find() trên Textrange trả về các thực thể của một chuỗi trong dải ô. Có thể dùng thao tác này cùng với setText() để thực hiện thao tác tìm và thay thế trong một hình dạng hoặc ô trong bảng.

Đoạn, mục danh sách và lần chạy

TextRange cung cấp các hàm để trả về tập hợp các thực thể văn bản hữu ích. Một số chức năng này bao gồm:

  • getParagraphs(), cung cấp tất cả các đoạn chồng lên dải ô văn bản. Đáp đoạn là một chuỗi văn bản kết thúc bằng ký tự dòng mới "\n".
  • getListParagraphs(), trả về các mục danh sách trong dải ô văn bản hiện tại.
  • getRuns(), cung cấp các chuỗi văn bản chồng lên dải ô văn bản hiện tại. Đáp đoạn văn bản chạy là một đoạn văn bản mà trong đó tất cả các ký tự có cùng một văn bản phong cách.

Định kiểu văn bản

Kiểu văn bản xác định cách hiển thị ký tự văn bản trong bản trình bày của bạn, bao gồm phông chữ, màu sắc và siêu liên kết.

Hàm getTextStyle() của dải ô văn bản cung cấp đối tượng TextStyle dùng để định kiểu văn bản. Đối tượng TextStyle bao gồm cùng văn bản với TextRange mẹ.

trang trình bày/kiểu/kiểu.g
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);
}

Trong ví dụ trên, trước tiên, hãy tạo một hộp văn bản trên trang trình bày đầu tiên và đặt thành "Xin chào". Sau đó, mã này sẽ nối văn bản "world!". Văn bản mới được thêm vào được in đậm, liên kết với www.example.com và màu được đặt sang màu đỏ.

Khi đọc kiểu, hàm sẽ trả về giá trị rỗng nếu dải ô có nhiều giá trị cho phong cách. Do đó mẫu trên tạo ra các câu lệnh nhật ký sau:

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

Có nhiều kiểu khác có thể áp dụng cho văn bản. Bạn có thể xem thêm thông tin chi tiết trong tài liệu tham khảo về TextStyle.

Định kiểu đoạn

Kiểu đoạn áp dụng cho toàn bộ đoạn văn và bao gồm cả những yếu tố như căn chỉnh văn bản và dòng giãn cách. Hàm getĐoạnStyle() trong TextRange cung cấp ParagraphStyle để tạo kiểu cho tất cả các đoạn chồng lên dải ô văn bản mẹ.

Ví dụ sau đây sẽ tạo một hộp văn bản trên trang trình bày đầu tiên có 4 đoạn văn bản, sau đó căn giữa ba đoạn đầu tiên.

trang trình bày/kiểu/kiểu.g
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);
}

Định kiểu danh sách

Tương tự như ParagraphStyle, bạn có thể dùng ListStyle để định kiểu cho tất cả các đoạn chồng lên dải ô văn bản gốc.

trang trình bày/kiểu/kiểu.g
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);
}

Ví dụ trên sẽ tạo một hộp văn bản trên trang trình bày đầu tiên, gồm 4 đoạn văn: đoạn thứ hai được thụt lề một lần và đoạn thứ ba được thụt lề 2 lần. Sau đó, giá trị này áp dụng giá trị đặt trước trong danh sách cho tất cả các đoạn. Cuối cùng, mỗi mức lồng ghép của đoạn được ghi lại. (Mức lồng ghép của đoạn văn bản được lấy từ số thẻ trước văn bản của đoạn). Tập lệnh trên tạo ra các câu lệnh nhật ký sau:

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