テキストの編集とスタイル設定

テキスト範囲を使用して、テキストの編集やスタイル設定を行うことができます。テキスト範囲は TextRange 型。TextRange は、シェイプまたは範囲内のテキスト セグメントを表します。 使用できます。シェイプまたは表のセルで getText() を呼び出すと、 範囲を指定します。

図形内のテキストのサイズを編集する方法を使用する場合、 適用した場合、そのシェイプは無効になります。

テキスト範囲の使用

テキスト範囲には、テキスト セグメントを区切る 2 つのインデックスがあります テキスト範囲(開始インデックスと終了インデックス)で囲まれている。「新規顧客の獲得」目標を 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」)が削除されます。 「galaxy」というテキストが挿入されます。インデックス 6 に変更します。上記の例では、 次のログ ステートメント:

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

検索と置換

プレゼンテーションまたはページで replaceAllText() 関数を使用して、グローバル プレゼンテーション全体または特定のページで検索、置換できます。

TextRange の find() 関数は、 あります。これは、検索と置換を実行するために setText() と組み合わせて使用できます。 編集することもできます。

段落、リストアイテム、実行

TextRange には、テキスト エンティティの有用なコレクションを返す関数が用意されています。 たとえば、次のような関数があります。

  • getParagraphs(),: テキスト範囲と重複するすべての段落を提供します。 段落は、改行文字で終わる一連のテキストです。 「\n」
  • getListParagraphs(), は、現在のテキスト範囲にあるリストアイテムを返します。
  • getRuns(),: 現在のテキスト範囲と重複するテキスト実行を指定します。 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 にリンクされ、色が設定されています 赤に変更できます。

スタイルの読み取り時に、範囲に複数の値がある場合、この関数は null を返します。 指定します。したがって、上記のサンプルでは、次のログ ステートメントが生成されます。

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

テキストに適用できるスタイルは他にも多数あります。詳細は TextStyle リファレンス ドキュメントをご覧ください。

段落のスタイル設定

段落スタイルは段落全体に適用され、テキストの配置や線なども適用されます。 使用します。TextRange の getParagraphStyle() 関数は ParagraphStyle を提供します。 このオブジェクトを使用すると、親テキスト範囲と重複するすべての段落のスタイルを設定できます。

次の例では、最初のスライドに 4 つのテキスト ボックスが 最初の 3 つの段落を中央揃えにします。

スライド/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);
}

上記の例では、最初のスライドに 4 つの段落を含むテキスト ボックスが作成されます。 第 2 段落を 1 回インデントし、第 3 段落をインデントします。 2 回行います。すべての段落にリストのプリセットを適用します。最後に、 段落のネストレベルが記録されます。(段落のネスト レベルは 段落テキストの前のタブの数)。上のスクリプトを実行すると、次のようになります。 次のログ ステートメント:

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