Modification et mise en forme du texte

Vous pouvez modifier un texte et lui appliquer un style à l'aide de plages de texte, représentées par les Type TextRange. Un élément TextRange représente un segment de texte dans une forme ou dans une cellule du tableau. L'appel de getText() sur une forme ou une cellule de tableau renvoie une qui couvre l'intégralité du texte.

Si vous utilisez des méthodes permettant de modifier l'ajustement du texte à une forme, les paramètres appliquées à la forme sont désactivées.

Utiliser des plages de texte

Une plage de texte comporte deux index qui délimitent le segment de texte couverte par une plage de texte: l'index de départ et l'index de fin. Vous pouvez déterminer ces index à l'aide des fonctions getStartIndex() et getEndIndex().

Pour lire le contenu d'une plage de texte, utilisez la commande asString() ou Fonctions asRenderedString().

Pour extraire une sous-plage d'une plage de texte, utilisez la fonction getRange().

Le script suivant crée une zone de texte sur la première diapositive et en définit le contenu textuel. par "Hello world!". Elle récupère ensuite une sous-plage qui ne couvre que la plage "Hello".

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

La plage de texte renvoyée par une forme ou une cellule de tableau couvre toujours l'intégralité du texte, même si du texte est inséré et supprimé. Ainsi, l'exemple ci-dessus produit les instructions de journalisation suivantes:

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

Insérer et supprimer du texte

Vous pouvez également insérer et supprimer des formes de texte et des cellules de tableau à l'aide d'un des plages de texte.

  • insertText() et appendText() vous permettent d'insérer du texte.
  • setText() remplace le texte d'une plage de texte par le texte fourni.
  • clear() supprime le texte d'une plage.

Le script suivant illustre l'utilisation de ces fonctions:

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

Ce script crée une zone de texte sur la première diapositive et en définit le contenu textuel. par "Hello world!". Il supprime ensuite les caractères de 6 à 11 ("monde") et insère le texte "galaxy" à l'index 6. L'exemple ci-dessus génère la l'instruction de journalisation suivante:

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

Rechercher et remplacer

Utiliser la fonction replaceAllText() sur une présentation ou une page pour effectuer une requête globale rechercher et remplacer dans toute la présentation ou sur une page spécifique.

La fonction find() sur TextRange renvoie les instances d'une chaîne au sein de l'élément la plage d'adresses IP. Vous pouvez l'utiliser avec setText() pour effectuer une recherche et un remplacement. dans une forme ou une cellule de tableau.

Paragraphes, éléments de liste et exécutions

TextRange fournit des fonctions permettant de renvoyer des collections utiles d'entités de texte. Voici quelques-unes de ces fonctions:

  • getParagraphs(),, qui fournit tous les paragraphes qui chevauchent la plage de texte. A paragraph est une séquence de texte qui se termine par le caractère de retour à la ligne, "\n".
  • getListParagraphs(),, qui renvoie les éléments de la liste de la plage de texte actuelle.
  • getRuns(),, qui fournit les exécutions de texte qui chevauchent la plage de texte actuelle. A "text run" est un segment de texte dans lequel tous les caractères ont le même texte du style.

Style du texte

Le style de texte détermine le rendu des caractères de texte dans votre présentation, notamment la police, la couleur et les liens hypertexte.

La fonction getTextStyle() d'une plage de texte fournit un objet TextStyle utilisé pour styliser le texte. L'objet TextStyle couvre le même texte que son élément parent TextRange.

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

L'exemple ci-dessus crée d'abord une zone de texte sur la première diapositive et définit sa par "Hello". Le texte "world!" est ensuite ajouté. Texte nouvellement ajouté est en gras, associé à www.example.com, et sa couleur est définie au rouge.

Lors de la lecture de styles, la fonction renvoie une valeur nulle si la plage comporte plusieurs valeurs. pour le style. L'exemple ci-dessus génère donc les instructions de journalisation suivantes:

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

De nombreux autres styles peuvent être appliqués au texte. Pour en savoir plus, consultez la documentation de référence sur TextStyle.

Style de paragraphe

Les styles de paragraphe s'appliquent à des paragraphes entiers et incluent des éléments tels que l'alignement du texte et la ligne. l’espacement. La fonction getParagraphStyle() dans TextRange fournit un ParagraphStyle. permettant d'appliquer un style à tous les paragraphes qui chevauchent la plage de texte parent.

L'exemple suivant crée une zone de texte sur la première diapositive avec quatre paragraphes, puis aligne les trois premiers paragraphes.

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

Style de liste

Comme pour ParagraphStyle, vous pouvez utiliser ListStyle pour appliquer un style à tous les paragraphes. qui chevauchent la plage de texte parent.

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

L'exemple ci-dessus crée une zone de texte sur la première diapositive, contenant quatre paragraphes: le deuxième paragraphe est mis en retrait une fois et le troisième paragraphe est en retrait. deux fois. Il applique ensuite un préréglage de liste à tous les paragraphes. Enfin, chaque d'imbrication de paragraphe est consigné. (Le niveau d'imbrication du paragraphe provient le nombre de tabulations avant le texte du paragraphe.) Le script ci-dessus génère donc les instructions de journalisation suivantes:

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