Hücre içindeki metin olduğunda doğru Tablo hücresi yüksekliği nasıl elde edilir

Aug 17 2020

Geçmiş: - Şekil boyutu tablo hücresi boyutuna eşit değildir ve metni şeklin içine sığdırır

Çözüm mükemmel çalışıyordu, ama biz Sanki "ile yaptığına dair bir metnin metin yüksekliğini değiştirmek ne zaman ı bazı sorunlar buldu Metin 1 ", ben "yüksekliğini değiştirdi Metin 1 ", daha sonra satır yüksekliği sonucu 0.0 olacak

Google Apps Komut Dosyasının Sınırlandırılması: Hücre yüksekliğini alamıyoruz, hücrenin dolgusunu alamıyoruz.

Bazı araştırmalardan sonra hücrenin paragrafını metin olarak çıkarmaya çalıştım.

Benim ve Tanaike modifikasyonumla güncellenmiş komut dosyası :

var rowHeight = 0.0;

  var tableCell = pageElements[index].asTable().getCell(ir, ic);

  //Get cell color
  let cellFill = tableCell.getFill().getSolidFill();

  var cellParaText = tableCell.getText().getParagraphs();
  cellParaText.forEach(function(item, index) {
    
    var t = cellParaText[index].getRange();

    //I tried to applied Tanaike's solution here

    rowHeight = rowHeight + ( t.asString().split("\n").length - 1 ) * ( t.getTextStyle().getFontSize() / 72 * 96 )

    //rowHeight = rowHeight + cellParaText[index].getRange().getTextStyle().getFontSize();

    rowHeight = rowHeight + cellParaText[index].getRange().getParagraphStyle().getSpaceAbove()
    rowHeight = rowHeight + cellParaText[index].getRange().getParagraphStyle().getSpaceBelow()
    rowHeight = rowHeight + (cellParaText[index].getRange().getParagraphStyle().getLineSpacing()/100)

  });


  //Get cell text, text color and text background color
  let cellText = tableCell.getText().asString()

  //insert the RECTANGLE shape 
  let insertedShape = selection.getCurrentPage()
                        .insertShape(SlidesApp.ShapeType.RECTANGLE, cellLeft+5, cellTop+5, columnWidth, rowHeight);

Tam komut dosyası burada https://pastebin.com/keXKHbhC

İşte GSlide'daki Tablom - https://docs.google.com/presentation/d/10nupvk-2BZDSV6-gPn_n2LkrUtkCxot7qr_jcZGBHqw/edit#slide=id.p

Yine de sorun, tablo hücresine eşit şekil yüksekliği ile aynıdır, Resme bakın

Yanıtlar

1 Tanaike Aug 17 2020 at 23:57

Bu değişikliğe ne dersiniz?

Değişiklik noktaları:

  • Kontrol ettiğimde getSpaceAbove()ve getSpaceBelow()öyle görünüyor ki 0.
  • Sanırım bu getLineSpacing()kullanılabilir.
  • Ve bir önemli noktayı daha fark ettim. Örneğin 3 paragraf varken 4 paragraflık boşlukların kullanılması gerektiği görülmektedir.

Bu noktalar senaryonuza yansıtıldığında https://pastebin.com/keXKHbhCaşağıdaki gibi olur.

Değiştirilmiş komut dosyası:

Kimden:

cellParaText.forEach(function(item, index) {

  var t = cellParaText[index].getRange();
  
  //i tried to applied Tanike's solution here
  rowHeight = rowHeight + ( t.asString().split("\n").length - 1 ) * ( t.getTextStyle().getFontSize() / 72 * 96 )
  
  //rowHeight = rowHeight + cellParaText[index].getRange().getTextStyle().getFontSize();
  
  rowHeight = rowHeight + cellParaText[index].getRange().getParagraphStyle().getSpaceAbove()
  rowHeight = rowHeight + cellParaText[index].getRange().getParagraphStyle().getSpaceBelow()
  rowHeight = rowHeight + (cellParaText[index].getRange().getParagraphStyle().getLineSpacing()/100)

});

Kime:

cellParaText.forEach(function(item, index, a) {
  var t = cellParaText[index].getRange();
  var lineSpace = cellParaText[index].getRange().getParagraphStyle().getLineSpacing() / 100;
  var fontSize = t.getTextStyle().getFontSize() / 72 * 96;
  rowHeight += fontSize * (a.length > 1 ? lineSpace : 1);
  if (index == a.length - 1) rowHeight += fontSize;
});

Ayrıca, lütfen aşağıdaki gibi değiştirin.

Kimden:

insertedShape.getText()
            .getParagraphStyle()
            .setLineSpacing(cellParagraph.getLineSpacing()/100)
            .setSpaceAbove(cellParagraph.getSpaceAbove())
            .setSpaceBelow(cellParagraph.getSpaceBelow())
            .setSpacingMode(cellParagraph.getSpacingMode())
            .setParagraphAlignment(cellParagraph.getParagraphAlignment())

Kime:

insertedShape.getText()
            .getParagraphStyle()
            .setParagraphAlignment(cellParagraph.getParagraphAlignment())

Sonuç:

Örnek Google Slaytlarınız yukarıda değiştirilmiş komut dosyasıyla kullanıldığında aşağıdaki gibi olur.

Not:

  • Bu, örneğiniz için basit bir örnek komut dosyasıdır. Dolayısıyla, başka bir örnek kullandığınızda, komut dosyasının değiştirilmesi gerekebilir. Lütfen buna dikkat edin.
  • Bu durumda, örneğinizden, her paragrafın aynı yazı tipi boyutunda olduğunu varsayar. Lütfen buna dikkat edin.