Modificare e applicare stili al testo

Puoi modificare e formattare il testo utilizzando gli intervalli di testo, rappresentati dal tipo TextRange. Un TextRange rappresenta un segmento di testo all'interno di una forma o di una cella di una tabella. La chiamata di getText() su una forma o una cella di tabella restituisce un intervallo di testo che copre l'intero testo.

Se utilizzi metodi che modificano l'adattamento del testo a una forma, le impostazioni di adattamento automatico applicate alla forma vengono disattivate.

Utilizzo degli intervalli di testo

Un intervallo di testo ha due indici che delimitano il segmento di testo coperto da un intervallo di testo: l'indice iniziale e l'indice finale. Puoi determinare questi indici utilizzando le funzioni getStartIndex() e getEndIndex().

Per leggere i contenuti di un intervallo di testo, utilizza le funzioni asString() o asRenderedString().

Per recuperare un intervallo secondario da un intervallo di testo, utilizza la funzione getRange().

Il seguente script crea una casella di testo nella prima slide e imposta il relativo contenuto di testo su "Hello world!". Recupera quindi un intervallo secondario che comprende solo "Hello".

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

L'intervallo di testo restituito da una forma o da una cella di tabella coprirà sempre l'intero testo, anche se il testo viene inserito ed eliminato. Quindi, l'esempio precedente produce le seguenti istruzioni di log:

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

Inserimento ed eliminazione di testo

Puoi anche inserire ed eliminare forme di testo e celle di tabelle utilizzando intervalli di testo.

  • insertText() e appendText() ti consentono di inserire testo.
  • setText() sostituisce il testo di un intervallo di testo con il testo fornito.
  • clear() elimina il testo all'interno di un intervallo di testo.

Il seguente script mostra l'utilizzo di queste funzioni:

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

Questo script crea una casella di testo nella prima slide e imposta il relativo contenuto su "Hello world!". Elimina quindi i caratteri da 6 a 11 ("world") e inserisce il testo "galaxy" all'indice 6. L'esempio precedente produce la seguente istruzione di log:

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

Cerca e sostituisci

Utilizza la funzione replaceAllText() nella presentazione o nella pagina per eseguire una ricerca e sostituzione globale nell'intera presentazione o in una pagina specifica.

La funzione find() su TextRange restituisce le istanze di una stringa all'interno dell'intervallo. Può essere utilizzato insieme a setText() per eseguire la ricerca e la sostituzione all'interno di una forma o di una cella di una tabella.

Paragrafi, elementi di elenco e sequenze

TextRange fornisce funzioni per restituire raccolte utili di entità di testo. Alcune di queste funzioni includono:

  • getParagraphs(), che fornisce tutti i paragrafi che si sovrappongono all'intervallo di testo. Un paragrafo è una sequenza di testo che termina con il carattere di nuova riga, "\n".
  • getListParagraphs(), che restituisce gli elementi dell'elenco nell'intervallo di testo corrente.
  • getRuns(), che fornisce le sequenze di testo che si sovrappongono all'intervallo di testo corrente. Un segmento di testo è un segmento di testo in cui tutti i caratteri hanno lo stesso stile di testo.

Stile del testo

Lo stile del testo determina il rendering dei caratteri di testo nella presentazione, inclusi font, colore e link ipertestuali.

La funzione getTextStyle() di un intervallo di testo fornisce un oggetto TextStyle utilizzato per lo stile del testo. L'oggetto TextStyle copre lo stesso testo del relativo TextRange principale.

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

L'esempio precedente crea prima una casella di testo nella prima slide e imposta il relativo contenuto su "Hello ". Poi aggiunge il testo "world!". Il testo appena aggiunto è in grassetto, collegato a www.example.com e il suo colore è impostato su rosso.

Quando legge gli stili, la funzione restituisce null se l'intervallo ha più valori per lo stile. Pertanto, l'esempio precedente produce le seguenti istruzioni di log:

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

Esistono molti altri stili che possono essere applicati al testo. Per ulteriori dettagli, consulta la documentazione di riferimento di TextStyle.

Stili paragrafo

Gli stili di paragrafo si applicano a interi paragrafi e includono elementi come l'allineamento del testo e l'interlinea. La funzione getParagraphStyle() in TextRange fornisce un oggetto ParagraphStyle per applicare lo stile a tutti i paragrafi che si sovrappongono all'intervallo di testo principale.

L'esempio seguente crea una casella di testo nella prima slide con quattro paragrafi, quindi allinea al centro i primi tre paragrafi.

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

Stili elenco

Analogamente a ParagraphStyle, ListStyle può essere utilizzato per applicare lo stile a tutti i paragrafi che si sovrappongono all'intervallo di testo principale.

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

L'esempio precedente crea una casella di testo nella prima slide, contenente quattro paragrafi: il secondo paragrafo è rientrato una volta e il terzo paragrafo è rientrato due volte. Poi applica un preset di elenco a tutti i paragrafi. Infine, viene registrato il livello di nidificazione di ogni paragrafo. (Il livello di nidificazione del paragrafo deriva dal numero di tabulazioni prima del testo del paragrafo.) Pertanto, lo script precedente produce le seguenti istruzioni di log:

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