Modificare e applicare stili al testo

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

Se utilizzi metodi che modificano la modalità di adattamento del testo all'interno di una forma, tutte le impostazioni di adattamento automatico applicate alla forma vengono disattivate.

Uso di 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 sottointervallo da un intervallo di testo, utilizza la funzione getRange().

Lo script seguente crea una casella di testo nella prima slide e ne imposta il contenuto su "Hello world!". Quindi recupera un sottointervallo 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 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 tabella 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.

Lo script seguente illustra l'uso 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 ne imposta il contenuto su "Hello world!". Elimina quindi i caratteri da 6 a 11 ("mondo") e inserisce invece il testo "galassia" nell'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 la sostituzione globali 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 utilizzata insieme a setText() per eseguire operazioni di ricerca e sostituzione all'interno di una forma o di una cella di tabella.

Paragrafi, voci di elenco ed esecuzioni

TextRange fornisce funzioni per restituire utili raccolte di entità di testo. Ecco alcune di queste funzioni:

  • 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 esecuzioni di testo che si sovrappongono all'intervallo di testo corrente. Un'esecuzione di testo è un segmento di testo in cui tutti i caratteri hanno lo stesso stile di testo.

Stili di testo

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

La funzione getTextStyle() di un intervallo di testo fornisce un oggetto TextStyle utilizzato per applicare uno stile al testo. L'oggetto TextStyle copre lo stesso testo dell'oggetto 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 sopra crea prima una casella di testo sulla prima slide e ne imposta il contenuto su "Hello ". Poi aggiunge il testo "mondo!". Il testo appena aggiunto è in grassetto, è collegato a www.example.com e il suo colore è impostato su rosso.

Durante la lettura degli stili, la funzione restituisce null se l'intervallo contiene più valori per lo stile. Quindi 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. Ulteriori dettagli sono disponibili nella 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 definire 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, è possibile utilizzare ListStyle per applicare uno 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 sopra crea una casella di testo nella prima diapositiva contenente quattro paragrafi: il secondo paragrafo è rientrato una volta e il terzo rientra due volte. Quindi applica un elenco preimpostato a tutti i paragrafi. Infine, viene registrato il livello di annidamento di ogni paragrafo. (il livello di annidamento del paragrafo deriva dal numero di tabulazioni prima del testo del paragrafo). Lo script riportato sopra genera 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