編輯及設定文字樣式

您可以使用「文字範圍」編輯文字及設定文字樣式,文字範圍以 TextRange 類型。TextRange 代表形狀中一段文字或 表格儲存格中。對形狀或表格儲存格呼叫 getText() 會傳回 覆蓋整段文字的文字範圍

如果您使用的方法會編輯文字在形狀中的配合程度,任何自動調整設定 形狀都會停用。

使用文字範圍

文字範圍有兩個索引,用來分隔文字片段 包含下列文字範圍:起始索引結束索引。您可以決定 方法是使用 getStartIndex()getEndIndex() 函式。

如要讀取文字範圍的內容,請使用 asString()asRenderedString() 函式。

如要從文字範圍內擷取子範圍,請使用 getRange() 函式。

下列指令碼會在第一張投影片中建立文字方塊,並設定文字內容 「Hello World!」。然後擷取橫跨「Hello」的子範圍。

投影片/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);
}

形狀或表格儲存格傳回的文字範圍一律涵蓋整段文字, 即便插入並刪除文字上述範例 下列記錄陳述式:

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

插入及刪除文字

您也可以使用 文字範圍

  • insertText()appendText() 可讓您插入文字。
  • setText() 會將文字範圍的文字替換成提供的文字。
  • clear() 會刪除文字範圍中的文字。

以下指令碼示範了這些函式的使用:

投影片/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 (「world」) 字元。 插入「Gallaxy」文字指向索引 6上述範例會產生 下列記錄陳述式:

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

搜尋與取代

在簡報或頁面上使用 replaceAllText() 函式執行全域 可以在整份簡報或特定頁面中尋找並取代。

TextRange 上的 find() 函式會傳回 範圍。可以與 setText() 搭配使用,以便執行尋找與取代作業 形狀或表格儲存格中的樣式

段落、清單項目和執行作業

TextRange 提供函式,可用於傳回實用的文字實體集合。 其中一些函式包括:

  • getParagraphs(),,提供與文字範圍重疊的所有段落。A 罩杯 paragraph 是一串文字,結尾為換行字元 「\n」。
  • getListParagraphs(), 會傳回目前文字範圍中的清單項目。
  • getRuns(),:提供與目前文字範圍重疊的文字的執行作業。A 罩杯 「text run」是一段文字,所有字元都具有相同的文字 。

文字樣式

文字樣式會決定簡報中文字字元的呈現方式 包括字型、顏色和超連結

文字範圍的 getTextStyle() 函式會提供 TextStyle 物件,用於 設定文字樣式TextStyle 物件涵蓋與父項 TextRange 相同的文字。

投影片/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 你好!」然後附加「world!」這段文字。新附加的文字 設為粗體,已連結至 www.example.com,已設定顏色 變成紅色。

讀取樣式時,如果範圍有多個值,則函式會傳回空值 樣式。因此,上述範例會產生下列記錄陳述式:

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

還有許多其他樣式可以套用至文字。如需更多詳細資料, 可在 TextStyle 參考說明文件中找到。

段落樣式

段落樣式適用於整個段落,包括文字對齊方式和線條等 。TextRange 中的 getParagraphStyle() 函式提供 ParagraphStyle 物件,設定父項文字範圍重疊的所有段落樣式。

以下範例在第一張投影片中建立文字方塊,且包含四張 然後將前三個段落置中對齊。

投影片/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 可用於設定所有段落樣式 與父項文字範圍重疊

投影片/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