Metni düzenleme ve biçimlendirme

TextRange türüyle gösterilen metin aralıklarını kullanarak metni düzenleyebilir ve biçimlendirebilirsiniz. TextRange, bir şekil veya tablo hücresi içindeki bir metin segmentini temsil eder. Bir şekil veya tablo hücresinde getText() tuşuna basıldığında metnin tamamını kapsayan bir metin aralığı döndürülür.

Metnin bir şekle nasıl sığdığı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

Metin aralığında, metin aralığı tarafından kapsanan metin segmentini sınırlayan iki dizin bulunur: başlangıç dizini ve bitiş dizini. Bu dizinleri getStartIndex() ve getEndIndex() işlevlerini kullanarak belirleyebilirsiniz.

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

Bir metin aralığındaki alt aralığı 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 "Merhaba"yı 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 veya tablo hücresi tarafından döndürülen metin aralığı, metin eklenip silinse bile her zaman metnin tamamını kapsar. Bu nedenle, 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ını kullanarak metin şekilleri ve tablo hücreleri ekleyip silebilirsiniz.

  • insertText() ve appendText() simgeleriyle metin ekleyebilirsiniz.
  • setText(), bir metin aralığının metnini sağlanan metinle değiştirir.
  • clear(), 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. Ardından 6. karakterden 11. karaktere kadar olan karakterleri ("world") siler ve 6. indekse "galaxy" metnini ekler. Yukarıdaki örnek aşağıdaki günlük ifadesini oluşturur:

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

Arama ve değiştirme

Sunumun veya sayfanın tamamında genel bir bulma ve değiştirme işlemi gerçekleştirmek için sunumda ya da sayfada replaceAllText() işlevini kullanın.

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

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

TextRange, metin varlıklarının faydalı koleksiyonlarını döndürmek için işlevler sağlar. Bu işlevlerden bazıları şunlardır:

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

Metin stili

Metin stili, sununuzdaki metin karakterlerinin yazı tipi, renk ve köprü oluşturma dahil olmak üzere nasıl oluşturulacağını belirler.

Bir metin aralığının getTextStyle() işlevi, metin stilini belirlemek için kullanılan bir TextStyle nesnesi sağlar. TextStyle nesnesi, üst öğesi olan TextRange 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 örnekte önce ilk slaytta bir metin kutusu oluşturulur ve içeriği "Hello " olarak ayarlanır. Ardından "world!" metni eklenir. Yeni eklenen metin www.example.com bağlantısı verilerek kalınlaştırılır ve rengi kırmızı olarak ayarlanır.

Stilleri okurken işlev, aralıkta stil için birden fazla değer varsa boş değer döndürür. Bu nedenle, 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 başka birçok stil vardır. Daha fazla ayrıntıyı TextStyle referans belgelerinde bulabilirsiniz.

Paragraf stili

Paragraf stilleri, metin hizalama ve satır aralığı gibi özellikleri içeren ve tüm paragraflara uygulanan stillerdir. TextRange içindeki getParagraphStyle() işlevi, üst metin aralığıyla çakışan tüm paragrafları stilize etmek için bir ParagraphStyle nesnesi sağlar.

Aşağıdaki örnekte, ilk slaytta dört paragraflık bir metin kutusu oluşturulur ve ilk üç paragraf ortalanı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, 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'ya benzer şekilde, ListStyle üst metin aralığıyla çakışan tüm paragrafları biçimlendirmek için 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 örnek, ilk slaytta dört paragraf içeren bir metin kutusu oluşturur: İkinci paragraf bir kez, üçüncü paragraf ise iki kez girintilenir. Ardından, tüm paragraflara bir liste hazır ayarı uygular. Son olarak, her paragrafın yerleştirme düzeyi kaydedilir. (Paragrafın yerleştirme düzeyi, paragraf metninden önceki sekme sayısından gelir.) Bu nedenle, 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