我写这封信将使用用户已选择的表的脚本。 但是,使用DocumentApp.getActiveDocument().getSelection().getRangeElements()
仅将获得单个细胞。 我想我可能只是重建表,但这些细胞都在一个长长的清单上的行或列中没有的信息,用户应该能够选择任何高度/宽度的表,而不必告诉程序什么尺寸是。 我也想过具有程序自动选择超前了一点,以治表为表,而不是单个细胞,但仍选择单个的细胞(但不是所有的人这是一个有点奇特。)感谢您的任何反馈/救命!
Answer 1:
通过将光标在任何细胞替换选择的表
我只是做了该表的二维数组被替换。
如果您尝试投的第一个元素非稳态(),你会得到错误“段不能被转换为表”。 那么,如果添加其他的getParent(),你会得到错误“TABLE_CELL不能转换为表。 ',然后添加其他的getParent(),你会得到错误‘TABLE_ROW不能转换到餐桌’。 最后加入另一种的getParent()最后穿过长手套和替换表。 你可以把光标在表中的任意单元格。 这是一个黑客位,但在最后它似乎工作。 这本来是更难算出这个不知道如何使用调试资源,谷歌提供。
function replaceTableAtCursor(){
var doc=DocumentApp.getActiveDocument();
var body=doc.getBody();
var el=doc.getCursor().getElement().getParent().getParent().getParent();//element/cell/row/table
var table=el.asTable();
var t=[];//This is the table I used. Any 2D array will work like the ones you can get from getValues() method from spreadsheets.
for(var i=0;i<3;i++){
t[i]=[];
for(var j=0;j<3;j++){
t[i][j]=Utilities.formatString('i:%s,j:%s',i,j);
}
}
var childIndex=body.getChildIndex(el)
table.clear();
body.insertTable(childIndex,t)
}
- 位置级别
- 故障排除
- 例如一个编辑在放置一个表
文章来源: How to get selected table in Google apps script