सेल के अंदर टेक्स्ट होने पर टेबल सेल की सही ऊंचाई कैसे प्राप्त करें

Aug 17 2020

इतिहास: - आकार आकार तालिका सेल आकार के बराबर नहीं है और आकृति के अंदर पाठ फिट है

समाधान पूरी तरह से काम कर रहा था, लेकिन मैं कुछ मुद्दों पर मिल गया है जब हम किसी भी पाठ मैं जैसा "के साथ किया था के पाठ ऊंचाई बदल जाएगा पाठ 1 ", मैं "की ऊंचाई बदल पाठ 1 ", तो पंक्ति की ऊँचाई का परिणाम 0.0 हो जाएगा

Google Apps स्क्रिप्ट की सीमा: हम सेल की ऊँचाई प्राप्त नहीं कर सकते, सेल की पैडिंग प्राप्त नहीं कर सकते।

कुछ शोध के बाद सेल के पैराग्राफ को टेक्स्ट के रूप में निकालने की कोशिश की।

मेरे और Tanaike संशोधन के साथ अद्यतन स्क्रिप्ट :

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

यहां पूरी स्क्रिप्ट https://pastebin.com/keXKHbhC

यहाँ GSlide में मेरी तालिका है - https://docs.google.com/presentation/d/10nupvk-2BZDSV6-gPn_n2LkrUtkCxot7qr_jcZGBHqw/edit#slide=id.p

फिर भी मुद्दा तालिका सेल के बराबर आकार की ऊंचाई के साथ समान है, छवि देखें

जवाब

1 Tanaike Aug 17 2020 at 23:57

इस संशोधन के बारे में कैसे?

संशोधन अंक:

  • जब मैंने जाँच की getSpaceAbove()और getSpaceBelow(), ऐसा लगता है कि वे हैं 0
  • मुझे लगता है कि getLineSpacing()इसका इस्तेमाल किया जा सकता है।
  • और, मैंने एक और महत्वपूर्ण बिंदु पर ध्यान दिया। उदाहरण के लिए, जब 3 पैराग्राफ होते हैं, तो ऐसा लगता है कि 4 पैराग्राफ के रिक्त स्थान का उपयोग करना आवश्यक है।

जब यह अंक आपकी स्क्रिप्ट के लिए परिलक्षित होते हैं https://pastebin.com/keXKHbhC, यह निम्नानुसार हो जाता है।

संशोधित स्क्रिप्ट:

से:

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)

});

सेवा:

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

और यह भी, कृपया निम्नानुसार संशोधित करें।

से:

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

सेवा:

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

परिणाम:

जब आपके नमूने Google स्लाइड का उपयोग संशोधित स्क्रिप्ट के साथ किया जाता है, तो यह निम्नानुसार हो जाता है।

ध्यान दें:

  • यह आपके नमूने के लिए एक सरल नमूना स्क्रिप्ट है। इसलिए जब आप अन्य नमूने का उपयोग करते हैं, तो स्क्रिप्ट को संशोधित करने की आवश्यकता हो सकती है। कृपया इससे सावधान रहें।
  • इस मामले में, आपके नमूने से, यह मान लेता है कि प्रत्येक पैराग्राफ एक ही फ़ॉन्ट आकार है। कृपया इससे सावधान रहें।