Edytowanie i zmienianie stylu tekstu

Możesz go edytować i stylizować za pomocą zakresów tekstu, które są reprezentowane przez znaczniki Typ: TextRange. TextRange oznacza fragment tekstu w kształcie lub w komórce tabeli. Wywołanie getText() w komórce kształtu lub tabeli powoduje zwrócenie zakres tekstowy obejmujący cały tekst.

Ustawienia autodopasowania (jeśli używasz metod edycji sposobu dopasowania tekstu do kształtu) zastosowane do kształtu są dezaktywowane.

Korzystanie z zakresów tekstu

Zakres tekstowy ma dwa indeksy, które rozdzielają segment tekstu zakres tekstowy: indeks początkowy i indeks końcowy. Możesz określić, te indeksy za pomocą funkcji getStartIndex() i getEndIndex().

Aby odczytać zawartość zakresu tekstowego, użyj funkcji asString() lub asRenderedString().

Aby pobrać podzakres z zakresu tekstu, użyj funkcji getRange().

Następujący skrypt tworzy pole tekstowe na pierwszym slajdzie i ustawia jego zawartość tekstową do „Hello world”. Następnie pobiera podzakres, który obejmuje tylko frazę „Hello”.

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

Zakres tekstu zwrócony przez kształt lub komórkę tabeli zawsze obejmuje cały tekst nawet jeśli tekst zostanie wstawiony i usunięty. W przykładzie powyżej daje się następujące instrukcje dziennika:

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

Wstawianie i usuwanie tekstu

Możesz też wstawiać i usuwać kształty tekstowe oraz komórki tabeli za pomocą zakresy tekstu.

  • insertText() i appendText() umożliwiają wstawianie tekstu.
  • Funkcja setText() zastępuje tekst z zakresu tekstowym podanym tekstem.
  • Funkcja clear() usuwa tekst z zakresu tekstu.

Poniższy skrypt ilustruje użycie tych funkcji:

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

Ten skrypt tworzy pole tekstowe na pierwszym slajdzie i ustawia jego zawartość tekstową do „Hello world”. Następnie usuwa znaki od 6 do 11 („świat”) oraz wstawia tekst „galaktyka” w indeksie 6. W przykładzie powyżej tworzona jest funkcja ta instrukcja logowania:

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

Wyszukaj i zamień

Użyj funkcji replaceAllText() w prezentacji lub na stronie, aby wykonać globalne znajdowanie i zastępowanie w całej prezentacji lub na określonej stronie.

Funkcja find() w obiekcie TextRange zwraca wystąpienia ciągu znaków w argumencie zakres dat. Można go używać razem z funkcją setText() do wykonywania operacji „Znajdź i zamień” w komórce kształtu lub tabeli.

Akapity, elementy listy i uruchomienia

TextRange udostępnia funkcje zwracające przydatne zbiory encji tekstowych. Oto niektóre z tych funkcji:

  • getParagraphs(), – obejmuje wszystkie akapity, które pokrywają się z zakresem tekstowym. O akapit to sekwencja tekstu, który kończy się znakiem nowego wiersza, „\n”.
  • getListParagraphs(),, która zwraca elementy listy z bieżącego zakresu tekstowego.
  • getRuns(),, w którym fragment tekstu nakłada się na bieżący zakres tekstu. O uruchomienie tekstu to fragment tekstu, w którym wszystkie znaki mają ten sam tekst stylu.

Styl tekstu

Styl tekstu określa sposób renderowania znaków tekstowych w prezentacji, takich jak czcionka, kolor i hiperlinki.

Funkcja getTextStyle() zakresu tekstowego udostępnia obiekt TextStyle używany do stylu tekstu. Obiekt TextStyle obejmuje ten sam tekst co obiekt nadrzędny TextRange.

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

W przykładzie powyżej tworzymy najpierw pole tekstowe na pierwszym slajdzie i ustawiamy jego na pytanie „Cześć ”. Następnie dodaje tekst „world!”. Nowo dołączony tekst jest pogrubiona, powiązana z adresem www.example.com oraz ma ustawiony kolor na czerwony.

Podczas odczytywania stylów funkcja zwraca wartość null, jeśli zakres zawiera wiele wartości. dla stylu. Powyższy przykład generuje następujące instrukcje logu:

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

Do tekstu można zastosować wiele innych stylów. Więcej informacji można uzyskać można znaleźć w dokumentacji referencyjnej TextStyle.

Styl akapitu

Style akapitu mają zastosowanie do całych akapitów i obejmują m.in. wyrównanie tekstu i linie. odstępów. Funkcja getParagraphStyle() w TextRange udostępnia funkcję ParagraphStyle do stylu wszystkich akapitów, które nakładają się na nadrzędny zakres tekstu.

W poniższym przykładzie na pierwszym slajdzie tworzymy pole tekstowe z czterema elementami: akapity, a następnie wyśrodkowuje pierwsze 3 akapity.

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

Styl listy

Podobnie jak ParagraphStyle, ListStyle może służyć do określania stylu wszystkich akapitów które nakładają się na nadrzędny zakres tekstu.

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

W przykładzie powyżej na pierwszym slajdzie zostanie utworzone pole tekstowe zawierające 4 akapity: do drugiego akapitu dodano jedno wcięcie, a do trzeciego akapitu – wcięcie dwa razy. Następnie do wszystkich akapitów zostanie zastosowana gotowa lista. I na koniec, poziom zagnieżdżenia akapitu jest rejestrowany. Poziom zagnieżdżenia akapitu pochodzi z liczbę tabulatorów przed tekstem akapitu). Powyższy skrypt generuje następujące instrukcje dziennika:

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