我尝试做一个脚本,以便在Google Document中合并2个单元格(或几个)。但是结果不如我预期的那样好,因为我有一个错误来刷新页面,并且在视觉上合并的单元格不是只要表格The result of the merge和初始表格为enter image description here
我的Google脚本是:
function onOpen() {
// Add a menu with some items, some separators, and a sub-menu.
DocumentApp.getUi().createMenu('Sample')
.addItem('Fusion cellules tableau', 'mergeCells')
.addToUi();
}
function mergeCells() {
var body = DocumentApp.getActiveDocument().getBody();
for (var p= 0; p< body.getNumChildren(); p++) {
var child = body.getChild(p);
if (child.getType() == DocumentApp.ElementType.TABLE){
// Assume we've already located our table
var table = child;
var tableRow = table.getChild(2); // gets third row
var tableCell = tableRow.getChild(1); // gets second cell in row
tableCell.merge(); // Merges seconde cell with first cell.
}
}
}
&#13;
所以,如果你有一个想法我将非常高兴:)
答案 0 :(得分:0)
对不起,这看起来非常令人沮丧。我能够重现你的问题,它看起来像.merge()方法与表格单元格一起工作的方式。 Scripts .merge()将元素的内容与前面的元素组合在一起,然后删除第二个元素。这实际上与合并单元格(在文档中)的工作方式不同。合并文档中的单元格时,它实际上不会删除任何元素,只需更改显示内容,以便您无法访问“隐藏”单元格。如果在具有合并单元格的行上调用getNumChildren(),它仍然具有完整的列数。
在单元格上运行.merge()会删除第二个子节点,并且似乎会创建一个不允许的表结构,这可能是它抛出错误的原因。
顺便说一下,有一个.getRowSpan()方法,你可以调用一个单元格,对于正常单元格返回1,对于合并单元格返回0,但是,不方便的是,没有“setRowSpan()”,所以它没有看起来你可以从脚本中进行常规样式合并。
几年前这里有一个similar question。
此外,here is the bug已列入Google。它是从5(!)年前。你可以尝试发布那里。
也许您可以尝试使用脚本复制内容并更改单元格之间的边框样式/宽度,但这似乎是一个巨大的痛苦。祝你好运!