Modificare e applicare stili al testo

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

Se utilizzi metodi che modificano il modo in cui il testo si adatta a una forma, tutte le impostazioni di adattamento automatico applicate alla forma sono disattivate.

Utilizzo di intervalli di testo

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

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

Per recuperare un sottointervallo dall'interno di un intervallo di testo, utilizza la funzione getRange().

Lo script seguente crea una casella di testo nella prima slide e ne imposta il contenuto di testo in "Hello world!". Quindi recupera un sottointervallo che comprende solo "Hello".

slide/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 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 un 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'utilizzo di queste funzioni:

slide/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 i contenuti in "Hello world!". Elimina quindi i caratteri da 6 a 11 ("mondo") e inserisce il testo "galassia" nell'indice 6. L'esempio precedente produce 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 trovare e sostituire in tutta la presentazione o in una pagina specifica.

La funzione find() su TextRange restituisce le istanze di una stringa all'interno dei campi intervallo. Può essere utilizzata insieme a setText() per eseguire la funzionalità Trova e sostituisci 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. Di seguito sono riportate alcune di queste funzioni:

  • getParagraphs(), che fornisce tutti i paragrafi che si sovrappongono all'intervallo di testo. R è una sequenza di testo che termina con un carattere di nuova riga, "\n".
  • getListParagraphs(),, che restituisce le voci di elenco nell'intervallo di testo corrente.
  • getRuns(),, che fornisce le esecuzioni di testo che si sovrappongono all'intervallo di testo corrente. R text run è un segmento di testo in cui tutti i caratteri hanno lo stesso lo stile del testo.

Stile del testo

Lo stile del testo determina la visualizzazione 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.

slide/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 innanzitutto una casella di testo nella prima slide e ne imposta la contenuti in "Hello ". Quindi aggiunge il testo "mondo!". Il testo appena aggiunto è in grassetto, collegato a www.example.com e il suo colore è impostato al rosso.

Durante la lettura degli stili, la funzione restituisce null se l'intervallo ha più valori. per lo stile. L'esempio precedente produce quindi 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 possono essere presente nella documentazione di riferimento di TextStyle.

Stile paragrafo

Gli stili di paragrafo vengono applicati a interi paragrafi e includono elementi come l'allineamento del testo e le linee. per la spaziatura. La funzione getParagraphStyle() in TextRange fornisce un valore ParagraphStyle per applicare uno stile a tutti i paragrafi che si sovrappongono all'intervallo di testo principale.

L'esempio seguente crea una casella di testo sulla prima slide con quattro paragrafi, quindi centra i primi tre paragrafi.

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

Stile elenco

Come in ParagraphStyle, è possibile utilizzare ListStyle per applicare lo stile a tutti i paragrafi che si sovrappongono all'intervallo di testo principale.

slide/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 è rientrato due volte. Quindi applica un elenco preimpostato a tutti i paragrafi. Infine, ogni viene registrato il livello di nidificazione del paragrafo. (Il livello di nidificazione del paragrafo proviene il numero di tabulazioni prima del testo del paragrafo.) Lo script riportato sopra genera 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