Metni düzenleme ve biçimlendirme

TextRange türüyle temsil edilen metin aralıklarını kullanarak metni düzenleyebilir ve stilini belirleyebilirsiniz. TextRange, bir şekil içindeki veya tablo hücresi içindeki bir metin segmentini temsil eder. Bir şekil veya tablo hücresinde getText() çağrısı yapıldığında metnin tamamını kapsayan bir metin aralığı döndürülür.

Metnin bir şekle nasıl sığacağını düzenleyen yöntemler kullanırsanız şekle uygulanan tüm otomatik sığdırma ayarları devre dışı bırakılır.

Metin aralıklarını kullanma

Bir metin aralığında, bir metin aralığının kapsadığı metin segmentini sınırlayan iki dizin bulunur: başlangıç dizini ve bitiş dizini. getStartIndex() ve getEndIndex() işlevlerini kullanarak bu dizinleri belirleyebilirsiniz.

Bir metin aralığının içeriğini okumak için asString() veya asRenderedString() işlevlerini kullanın.

Bir metin aralığından alt aralık almak için getRange() işlevini kullanın.

Aşağıdaki komut dosyası, ilk slaytta bir metin kutusu oluşturur ve metin içeriğini "Merhaba dünya!" olarak ayarlar. Ardından, yalnızca "Hello" ifadesini kapsayan bir alt aralık alır.

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

Bir şekil ya da tablo hücresinin döndürdüğü metin aralığı, metin eklenmiş ve silinmiş olsa bile, her zaman metnin tamamını kapsar. Dolayısıyla, yukarıdaki örnek aşağıdaki günlük ifadelerini oluşturur:

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

Metin ekleme ve silme

Ayrıca, metin aralıkları kullanarak metin şekilleri ve tablo hücreleri ekleyip silebilirsiniz.

  • insertText() ve appendText() metin eklemenize olanak tanır.
  • setText(), bir metin aralığındaki metni sağlanan metinle değiştirir.
  • clear(), bir metin aralığındaki metni siler.

Aşağıdaki komut dosyası bu işlevlerin kullanımını gösterir:

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

Bu komut dosyası, ilk slaytta bir metin kutusu oluşturur ve metin içeriğini "Merhaba dünya!" olarak ayarlar. Daha sonra, 6 ile 11 arasındaki karakterleri ("dünya") siler ve bunun yerine 6. dizine "galaksi" metnini ekler. Yukarıdaki örnek aşağıdaki günlük ifadesini oluşturur:

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

Ara ve değiştir

Tüm sunuda veya belirli bir sayfada global bul ve değiştir işlemini gerçekleştirmek için sunumda veya sayfada replaceAllText() işlevini kullanın.

TextRange üzerindeki find() işlevi, aralık içindeki bir dizenin örneklerini döndürür. Bir şekil veya tablo hücresinde bulma ve değiştirme işlemleri gerçekleştirmek için setText() ile birlikte kullanılabilir.

Paragraflar, liste öğeleri ve çalıştırmalar

TextRange, metin varlıklarından oluşan yararlı koleksiyon döndürecek işlevler sağlar. Bu işlevlerden bazıları şunlardır:

  • getParagraphs(),: Metin aralığıyla çakışan tüm paragrafları sağlar. Paragraf, "\n" yeni satır karakteriyle sona eren bir metin dizisidir.
  • getListParagraphs(),: Geçerli metin aralığındaki liste öğelerini döndürür.
  • getRuns(),: Mevcut metin aralığıyla çakışan metin çalıştırmalarını sağlar. Metin çalıştırma, tüm karakterlerin aynı metin stiline sahip olduğu bir metin segmentidir.

Metin stili

Metin stili; yazı tipi, renk ve köprü oluşturma dahil olmak üzere, sununuzda metin karakterlerinin oluşturulmasını belirler.

Bir metin aralığının getTextStyle() işlevi, metnin stilini belirlemek için kullanılan bir TextStyle nesnesi sağlar. TextStyle nesnesi, TextRange üst öğesi ile aynı metni kapsıyor.

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

Yukarıdaki örnek ilk olarak ilk slaytta bir metin kutusu oluşturur ve içeriğini "Hello " olarak ayarlar. Ardından "dünya!" metnini ekler. Yeni eklenen metin kalın yazılmıştır, www.example.com ile bağlantılıdır ve rengi kırmızı olarak ayarlanmıştır.

Stilleri okurken, aralıkta bu stil için birden fazla değer varsa işlev null değerini döndürür. Dolayısıyla, yukarıdaki örnek aşağıdaki günlük ifadelerini oluşturur:

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

Metne uygulanabilecek daha birçok stil vardır. TextStyle referans belgelerinde daha fazla bilgiye ulaşabilirsiniz.

Paragraf stili

Paragraf stilleri tüm paragraflar için geçerlidir ve metin hizalaması ve satır aralığı gibi özellikleri içerir. TextRange içindeki getParagraphStyle() işlevi, üst metin aralığıyla çakışan tüm paragrafların stilini belirlemek için bir ParagraphStyle nesnesi sağlar.

Aşağıdaki örnek, ilk slaytta dört paragraflı bir metin kutusu oluşturur, ardından ilk üç paragrafı ortaya hizalar.

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

Liste stili

ParagraphStyle ile benzer şekilde, üst metin aralığıyla çakışan tüm paragrafların stilini belirlemek için ListStyle kullanılabilir.

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

Yukarıdaki örnekte, ilk slaytta dört paragraf içeren bir metin kutusu oluşturulur: İkinci paragraf bir kez girintilendi ve üçüncü paragraf iki kez girintilendi. Ardından tüm paragraflara bir liste hazır ayarı uygular. Son olarak, her paragrafın iç içe yerleştirme seviyesi günlüğe kaydedilir. (Paragrafın iç içe yerleştirme seviyesi, paragraf metninden önceki sekme sayısından gelir.) Yukarıdaki komut dosyası aşağıdaki günlük ifadelerini oluşturur:

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