Comment obtenir la hauteur correcte de la cellule du tableau lorsque le texte à l'intérieur de la cellule
Historique: - La taille de la forme n'est pas égale à la taille de la cellule du tableau et ajuste le texte à l'intérieur de la forme
La solution fonctionnait parfaitement, mais j'ai trouvé des problèmes lorsque nous changions la hauteur du texte de n'importe quel texte Comme je l'ai fait avec " Texte 1 ", j'ai changé la hauteur de " Texte 1 ", le résultat de la hauteur de ligne sera de 0,0
Limitation du script Google Apps: nous ne pouvons pas obtenir la hauteur de la cellule, nous ne pouvons pas obtenir le remplissage de la cellule.
Après quelques recherches, j'ai essayé d'extraire le paragraphe de la cellule sous forme de texte.
Script mis à jour avec ma modification et 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);
Script complet ici https://pastebin.com/keXKHbhC
Voici ma table dans GSlide - https://docs.google.com/presentation/d/10nupvk-2BZDSV6-gPn_n2LkrUtkCxot7qr_jcZGBHqw/edit#slide=id.p
Le problème est toujours le même avec la hauteur de la forme égale à la cellule du tableau, voir l'image
Réponses
Et cette modification?
Points de modification:
- Quand j'ai vérifié
getSpaceAbove()
etgetSpaceBelow()
, il semble que ce soit le cas0
. - Je pense que cela
getLineSpacing()
pourrait être utilisé. - Et j'ai remarqué un autre point important. Par exemple, lorsqu'il y a 3 paragraphes, il semble qu'il soit nécessaire d'utiliser les espaces de 4 paragraphes.
Lorsque ces points sont reflétés dans votre script de https://pastebin.com/keXKHbhC, cela devient comme suit.
Script modifié:
De:
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;
});
Et aussi, veuillez modifier comme suit.
De:
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())
Résultat:
Lorsque votre exemple de diapositives Google est utilisé avec le script modifié ci-dessus, il se présente comme suit.
Remarque:
- Ceci est un simple exemple de script pour votre exemple. Ainsi, lorsque vous utilisez un autre exemple, le script peut devoir être modifié. Veuillez faire attention à cela.
- Dans ce cas, à partir de votre exemple, il suppose que chaque paragraphe a la même taille de police. Veuillez faire attention à cela.