我正在编写一个脚本,该脚本将使用用户选择的表。但是,使用DocumentApp.getActiveDocument().getSelection().getRangeElements()
将仅获取单个单元格。我以为我可以重建表格,但是所有单元格都在一个长长的列表中,没有行或列的信息,并且用户应该能够选择任何高度/宽度的表格,而不必告诉程序尺寸是多少是。我还考虑过让程序自动选择前面的某个表,以便将该表视为一个表而不是单个单元格,但这仍然会选择单个单元格(但不是所有的单元格都有些特殊。)感谢您的反馈/帮助!
答案 0 :(得分:0)
我只是为要替换的表格组成了一个二维数组。
如果您尝试将第一个元素转换为Table(),则会收到错误“ PARAGRAPH无法转换为TABLE。” ,然后添加另一个getParent(),您将获得错误'TABLE_CELL无法转换为TABLE。 ',然后添加另一个getParent(),您将得到错误'TABLE_ROW无法转换为TABLE。',最后添加另一个getParent()最终通过了手套并替换表格。您可以将光标放在表中的任何单元格中。这是一个小技巧,但最终似乎可行。如果不知道如何使用Google提供的调试资源,要弄清这一点将更加困难。
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)
}