Edición y estilo del texto

Puedes editar y diseñar el estilo del texto utilizando rangos de texto, que están representados por el signo TextRange. Un objeto TextRange representa un segmento de texto dentro de una forma o dentro de una celda de la tabla. Si llamas a getText() en una celda de forma o tabla, se muestra un un rango de texto que abarca todo el texto.

Si usas métodos que editan cómo se ajusta el texto a una forma, cualquier configuración de ajuste automático que se aplican a la forma se desactivan.

Cómo usar rangos de texto

Un rango de texto tiene dos índices que delimitan el segmento del texto cubiertas por un rango de texto: el índice de inicio y el índice de final. Puedes determinar estos índices con las funciones getStartIndex() y getEndIndex().

Para leer el contenido de un rango de texto, usa asString() o Funciones asRenderedString()

Para recuperar un subrango de un rango de texto, usa la función getRange().

La siguiente secuencia de comandos crea un cuadro de texto en la primera diapositiva y establece su contenido de texto. por "Hello World!". Luego, recupera un subrango que abarca solo "Hello".

diapositivas/estilo/estilo.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);
}

El rango de texto devuelto por una forma o celda de tabla siempre cubrirá todo el texto, incluso si el texto se inserta y se borra. Entonces, el ejemplo anterior produce la las siguientes instrucciones de registro:

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

Inserción y eliminación de texto

También puedes insertar y eliminar formas de texto y celdas de tabla con un o rangos de texto.

  • insertText() y appendText() te permiten insertar texto.
  • setText() reemplaza el texto de un rango de texto por el proporcionado.
  • clear() borra texto de un rango.

La siguiente secuencia de comandos demuestra el uso de estas funciones:

diapositivas/estilo/estilo.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);
}

Esta secuencia de comandos crea un cuadro de texto en la primera diapositiva y establece su contenido de texto. por "Hello World!". A continuación, borra los caracteres 6 a 11 ("mundo") y inserta el texto "galaxy" en el índice 6. Con el ejemplo anterior, se produce la siguiente instrucción de registro:

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

Buscar y reemplazar

Usa la función replaceAllText() en una presentación o página para realizar una globalización buscar y reemplazar en toda la presentación o en una página específica.

La función find() en TextRange devuelve las instancias de una cadena dentro del del rango de destino de la ruta. Se puede usar junto con setText() para realizar búsquedas y reemplazos. dentro de una forma o celda de tabla.

Párrafos, elementos de lista y ejecuciones

TextRange proporciona funciones para mostrar colecciones útiles de entidades de texto. Entre estas funciones, se incluyen las siguientes:

  • getParagraphs(),, que proporciona todos los párrafos que se superponen con el rango de texto. R es una secuencia de texto que termina con el carácter de línea nueva, “\n”.
  • getListParagraphs(),, que muestra los elementos de lista en el rango de texto actual.
  • getRuns(),, que proporciona las ejecuciones de texto que se superponen con el rango de texto actual. R texto ejecutado es un segmento de texto en el que todos los caracteres tienen el mismo texto estilo.

Estilos de texto

El estilo del texto determina la renderización de los caracteres de texto en tu presentación, incluidos la fuente, el color y los hipervínculos.

La función getTextStyle() de un rango de texto proporciona un objeto TextStyle que se usa para cómo darle estilo al texto. El objeto TextStyle abarca el mismo texto que su elemento superior TextRange.

diapositivas/estilo/estilo.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);
}

En el ejemplo anterior, primero se crea un cuadro de texto en la primera diapositiva y se establece su contenido a "Hola". Luego, agrega el texto "world!". El texto recién agregado está en negrita, está vinculado a www.example.com y se establece su color a rojo.

Cuando se leen estilos, la función muestra un resultado nulo si el rango tiene varios valores para el estilo. Por lo tanto, el ejemplo anterior produce las siguientes instrucciones de registro:

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

Hay muchos otros estilos que se pueden aplicar al texto. Puedes usar más detalles que se encuentra en la documentación de referencia de TextStyle.

Estilos de párrafo

Los estilos de párrafo se aplican a párrafos enteros y, además, incluyen elementos como la alineación y la línea del texto espaciado. La función getParagraphStyle() en TextRange proporciona un ParagraphStyle. El objeto para aplicar diseño a todos los párrafos que se superponen con el rango de texto superior.

En el siguiente ejemplo, se crea un cuadro de texto en la primera diapositiva con cuatro párrafos y, luego, alinea al centro los tres primeros párrafos.

diapositivas/estilo/estilo.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);
}

Estilos de lista

Al igual que ParagraphStyle, se puede usar ListStyle para aplicar diseño a todos los párrafos. que se superponen con el rango de texto superior.

diapositivas/estilo/estilo.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);
}

En el ejemplo anterior, se crea un cuadro de texto en la primera diapositiva que contiene cuatro párrafos: el segundo párrafo tiene sangría una vez y el tercer párrafo tiene una sangría dos veces. Luego, aplica un ajuste predeterminado de lista para todos los párrafos. Por último, cada se registra el nivel de anidamiento de párrafo. (El nivel de anidamiento del párrafo proviene de el número de tabulaciones antes del texto del párrafo). Por lo tanto, la secuencia de comandos anterior produce la las siguientes instrucciones de registro:

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