脚本 Google 合并文档中的单元格 Google Table

Script Google Merge cells in a Doc Google Table

我尝试编写一个脚本,以便在 Google Document.Anyway 中合并 2 个单元格(或多个单元格)结果不如我预期的好,因为我在刷新页面和视觉上合并的单元格不长 table The result of the merge and the initial table is 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.      
      }
  }
}

所以如果你有想法我会很高兴:)

抱歉,这看起来很令人沮丧。我能够重现您的问题,它看起来像是 .merge() 方法与 table 单元格一起工作的方式的错误。脚本 .merge() 将一个元素的内容与前一个元素的内容组合起来,然后删除第二个元素。这实际上与合并单元格(在文档中)的工作方式不同。当您从文档中合并单元格时,它实际上并没有删除任何元素,只是改变了显示方式,这样您就无法访问 "hidden" 单元格了。如果您在包含合并单元格的行上调用 getNumChildren(),它仍然具有完整的列数。

运行 单元格上的 .merge() 会删除第二个子项,并且似乎会创建一个不允许的 table 结构,这可能就是它引发错误的原因。

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

这里有一个 similar question 几年前的。

here is the bug 与 Google 一起列出。它来自 5(!)年前。您可以尝试 post 那里。

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