Modificare e formattare il testo

Modifica e applica 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 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.

Utilizzare 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. Determina questi indici utilizzando le funzioni getStartIndex e getEndIndex.

L'indice iniziale di un intervallo di testo è inclusivo, mentre l'indice finale è esclusivo. Entrambi gli indici sono basati su zero.

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 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 una tabella copre sempre l'intero testo, anche se il testo viene inserito ed eliminato. Quindi questo esempio produce le seguenti istruzioni di log:

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

Inserire ed eliminare testo

Puoi inserire ed eliminare testo in forme 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. Questo esempio 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 elemento principale TextRange.

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 innanzitutto 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, questo esempio 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 ParagraphStyle oggetto 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

Come ParagraphStyle, ListStyle può essere utilizzato 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 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 una preimpostazione 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 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