【发布时间】:2020-08-15 16:49:15
【问题描述】:
尝试插入与表格单元格大小相等的形状。
我使用InsertShape() 创建了形状,并将行高(可能是单元格的高度)、列宽(可能是单元格的宽度)复制到了形状中。
问题:
- 形状大小不等于单元格大小的高度和宽度。
- 形状内的文本变形,形状文本应自动适应,而单元格文本适合单元格内。
我不能说.getRow().getMinimumHeight() 是如何工作的。
文本长度不固定。它可能像一个很长的段落。
Google Apps 脚本的限制:
表格单元格 - Google Apps 脚本无法获取每个单元格的宽度和高度
Google Apps 脚本:
let activePresentation = SlidesApp.getActivePresentation()
let selection = activePresentation.getSelection()
let pageElements = selection.getPageElementRange().getPageElements()
//get table Left, table Top of each table under the pageElement object
var tableLeft = pageElements[0].asTable().getLeft(),
tableTop = pageElements[0].asTable().getTop();
var cellTop = tableTop; //cell top possible equal to table top
var cellLeft = tableLeft; //cell top possible equal to table Left
//get the row height and column width
var rowHeight = pageElements[0].asTable().getRow(0).getMinimumHeight();
var columnWidth = pageElements[0].asTable().getColumn(0).getWidth();
//get the internal text of cell
var cellText = pageElements[0].asTable().getCell(0, 0).getText().asString()
//insert shape equal to the table cell size
var shape_t = selection.getCurrentPage()
.insertShape(SlidesApp.ShapeType.RECTANGLE,
cellLeft+200,
cellTop,
columnWidth,
rowHeight);
//set the cell text insde the Shape
shape_t.getText().setText(cellText);
在这里你可以看到演示https://docs.google.com/presentation/d/10nupvk-2BZDSV6-gPn_n2LkrUtkCxot7qr_jcZGBHqw/edit?usp=sharing
完整脚本: https://pastebin.com/CrV3qHwG
复制问题 在 Google 脚本编辑器中粘贴上面提到的 https://pastebin.com/CrV3qHwG 脚本, 添加一个 1 行 1 列的表格,显然它将只有一个单元格。 选择表,然后通过单击“Test So”菜单中的“Create Shape”运行脚本。
图像在快速视图中显示问题和预期结果
【问题讨论】:
-
很遗憾,我无法复制您的情况。那么我可以问你关于复制你的问题的详细流程吗?
-
@Tanaike 在这里您可以看到演示 docs.google.com/presentation/d/… 完整脚本:pastebin.com/CrV3qHwG 复制上述问题中添加的问题的步骤。
-
感谢您回复并添加更多信息。我能理解你的情况。在您的情况下,似乎使用默认行高的行高。在这种情况下,高度可以由文本自动设置。这样,行高只有一行,即381000 EMU(30像素)的高度。所以当你想检索实际高度时,在现阶段,我认为需要手动或脚本设置高度并检索高度。
-
@Tanaike OP 要求您添加
answer。 -
@TheMaster 感谢您的支持。我能理解。我想准备一下。
标签: javascript google-apps-script shapes google-slides