Text bearbeiten und Stile festlegen

Sie können Text mithilfe von Textbereichen bearbeiten und gestalten. Diese werden durch das TextRange-Typ. Ein TextRange steht für ein Textsegment in einer Form oder in einer Tabellenzelle. Der Aufruf von getText() für eine Form oder Tabellenzelle gibt ein Textbereich, der den gesamten Text abdeckt.

Wenn Sie Methoden verwenden, die die Anpassung des Textes in eine Form ändern, werden alle Einstellungen für die automatische Anpassung die auf die Form angewendet wurden, deaktiviert sind.

Textbereiche verwenden

Ein Textbereich hat zwei Indexe, die das Textsegment begrenzen die von einem Textbereich abgedeckt werden: dem Startindex und Endindex. Sie können ermitteln, mit den Funktionen getStartIndex() und getEndIndex().

Um den Inhalt eines Textbereichs vorzulesen, verwenden Sie asString() oder asRenderedString()-Funktionen.

Wenn Sie einen Teilbereich innerhalb eines Textbereichs abrufen möchten, verwenden Sie die Funktion getRange().

Mit dem folgenden Skript wird ein Textfeld auf der ersten Folie erstellt und der Textinhalt wird festgelegt. in „Hello world!“. Dann wird ein Teilbereich abgerufen, der nur das „Hello“ umfasst.

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);
}

Der von einer Form oder Tabellenzelle zurückgegebene Textbereich deckt immer den gesamten Text ab. selbst wenn Text eingefügt und gelöscht wird. Im obigen Beispiel wird also folgende Protokollanweisungen:

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

Einfügen und Löschen von Text

Sie können Textformen und Tabellenzellen auch mit einem Textbereichen.

  • Mit insertText() und appendText() können Sie Text einfügen.
  • setText() ersetzt den Text eines Textbereichs durch den angegebenen Text.
  • clear() löscht Text aus einem Textbereich.

Das folgende Skript veranschaulicht die Verwendung dieser Funktionen:

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);
}

Dieses Skript erstellt ein Textfeld auf der ersten Folie und legt den Textinhalt fest in „Hello world!“. Anschließend werden die Zeichen 6 bis 11 ("Welt") gelöscht und fügt den Text „galaxy“ ein. bei Index 6. Das obige Beispiel erzeugt die folgende Loganweisung:

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

Suchen und ersetzen

Verwenden Sie die replaceAllText()-Funktion in einer Präsentation oder auf einer Seite, um einen globalen in der gesamten Präsentation oder auf einer bestimmten Seite suchen und ersetzen.

Die Funktion find() für TextRange gibt die Instanzen eines Strings innerhalb der Bereich. Sie kann zusammen mit setText() zum Suchen und Ersetzen verwendet werden. innerhalb einer Form oder Tabellenzelle.

Absätze, Listenelemente und Ausführungen

TextRange bietet Funktionen zur Rückgabe nützlicher Sammlungen von Textentitäten. Zu diesen Funktionen gehören:

  • getParagraphs(),: Hier werden alle Absätze angezeigt, die sich mit dem Textbereich überschneiden. A "Absatz" ist eine Textsequenz, die mit einem Zeilenumbruchzeichen, „\n“.
  • getListParagraphs(),: gibt die Listenelemente im aktuellen Textbereich zurück.
  • getRuns(), gibt die Textausführungen an, die den aktuellen Textbereich überlappen. A Textlauf ist ein Textsegment, in dem alle Zeichen den gleichen Text haben .

Textstil

Der Textstil bestimmt die Darstellung von Textzeichen in Ihrer Präsentation, z. B. Schriftart, Farbe und Hyperlinks.

Die getTextStyle()-Funktion eines Textbereichs stellt ein TextStyle-Objekt bereit, das für Folgendes verwendet wird: und gestalten den Text. Das TextStyle-Objekt deckt denselben Text wie das übergeordnete TextRange-Objekt ab.

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);
}

Im obigen Beispiel wird zunächst ein Textfeld auf der ersten Folie erstellt und in "Hello ". Dann wird der Text „world!“ angehängt. Den neu angehängten Text ist fett formatiert, mit www.example.com verknüpft und seine Farbe ist festgelegt auf Rot um.

Beim Lesen von Stilen gibt die Funktion null zurück, wenn der Bereich mehrere Werte hat. für den Stil. Das obige Beispiel erzeugt also die folgenden Log-Anweisungen:

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

Es gibt viele weitere Stile, die auf Text angewendet werden können. Weitere Details können finden Sie in der Referenzdokumentation zu TextStyle.

Absatzstile

Absatzstile werden auf ganze Absätze angewendet und umfassen z. B. Textausrichtung und Linien Zeilenabstand. Die Funktion getParagraphStyle() in TextRange stellt ein ParagraphStyle-Objekt bereit. -Objekt zum Gestalten aller Absätze, die den übergeordneten Textbereich überlappen.

Im folgenden Beispiel wird auf der ersten Folie ein Textfeld mit vier und dann die ersten drei Absätze zentrieren.

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);
}

Listenstil

Ähnlich wie bei „ParagraphStyle“ kann „ListStyle“ für die Gestaltung aller Absätze verwendet werden die den übergeordneten Textbereich überlappen.

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);
}

Im obigen Beispiel wird auf der ersten Folie ein Textfeld mit vier Absätzen erstellt: der zweite Absatz wird einmal und der dritte Absatz eingerückt. zweimal. Dann wird eine Listenvoreinstellung auf alle Absätze angewendet. Schließlich Die Verschachtelungsebene des Absatzes wird protokolliert. (Die Verschachtelungsebene des Absatzes stammt aus Anzahl der Tabulatoren vor dem Absatztext.) Das obige Skript erzeugt also folgende Protokollanweisungen:

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