脚本Google Merge单元格Google桌面

时间:2018-06-12 07:23:06

标签: javascript google-apps-script google-docs google-docs-api

我尝试做一个脚本,以便在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;
&#13;
&#13;

所以,如果你有一个想法我将非常高兴:)

1 个答案:

答案 0 :(得分:0)

对不起,这看起来非常令人沮丧。我能够重现你的问题,它看起来像.merge()方法与表格单元格一起工作的方式。 Scripts .merge()将元素的内容与前面的元素组合在一起,然后删除第二个元素。这实际上与合并单元格(在文档中)的工作方式不同。合并文档中的单元格时,它实际上不会删除任何元素,只需更改显示内容,以便您无法访问“隐藏”单元格。如果在具有合并单元格的行上调用getNumChildren(),它仍然具有完整的列数。

在单元格上运行.merge()会删除第二个子节点,并且似乎会创建一个不允许的表结构,这可能是它抛出错误的原因。

顺便说一下,有一个.getRowSpan()方法,你可以调用一个单元格,对于正常单元格返回1,对于合并单元格返回0,但是,不方便的是,没有“setRowSpan()”,所以它没有看起来你可以从脚本中进行常规样式合并。

几年前这里有一个similar question

此外,here is the bug已列入Google。它是从5(!)年前。你可以尝试发布那里。

也许您可以尝试使用脚本复制内容并更改单元格之间的边框样式/宽度,但这似乎是一个巨大的痛苦。祝你好运!