如何在没有这种奇怪结果的情况下合并Google文本文档中表格的两个单元格?

时间:2014-01-12 22:30:20

标签: google-apps-script

我已经写了这个函数(谢谢@Mogsdad)来合并文本google文档中表格中的单元格,如下所示:

enter image description here

function onOpen() {
  // Add a menu with some items, some separators, and a sub-menu.
  DocumentApp.getUi().createMenu('Sample')
      .addItem('merge cells of a table', '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.      
      }
  }
}

但是当我运行代码时,我得到了这个奇怪的结果(与预期的非常不同,合并的单元格具有相同的表格尺寸):

enter image description here

有没有办法解决它? (具有相同尺寸的合并单元格)

4 个答案:

答案 0 :(得分:11)

[编辑以解决Google文档中的更新]

这目前不可能。你可以通过调用getColSpangetRowSpan来了解是否合并了一个单元格,但是没有setter方法。

请为following issue加注星标,以便通知此更新。

您找到的merge函数并非特定于表格单元格,它可以将任何元素与之前同类型的兄弟相结合,并加入其内容。


[原创回答]

如果您希望有一个合并的单元格,就像您在电子表格中可以做的那样,这是不可能的。仅仅因为在Google文档中这是不可能的(至少现在还没有)。因此,API无法执行此操作(它只能执行手动操作的操作)。

这个merge函数并不像您想象的那样特定于表格单元格。它按设计工作。

答案 1 :(得分:2)

您可以通过解决方法来完成此操作。添加图纸并在此图纸文档中添加表格。在本文档中,如果您选择2个单元格并按下鼠标右键,则可以选择“合并单元格”选项。 See this youtube video for a tutorial

答案 2 :(得分:0)

以下是转换为Google文档时如何解决MS文档表格中的合并单元格:想法是返回MS Word文档并删除合并的单元格,然后复制并粘贴或转换MS字词到Google文档。通过这种方式,我们可以轻松地将MS文档中的表格转换为Google文档。但是,在Google文档中,无法合并单元格。

答案 3 :(得分:0)

一种解决方法是将表嵌入表中而不是合并单元格。这样,您仍然可以通过编程方式添加或删除单元格/行,而不会破坏表格。如果将单元格填充设置为0,则所有杂散段落都将设置为1pt字体,并删除所有单元格边框,并且无需合并任何单元格即可获得几乎相同的效果。

例如,我有一个包含4列的单元格,我希望将最后一列合并为一个单元格。我还希望能够使用Apps脚本添加或删除行。

嵌入表中的表:
Table embedded within a table

这样,我可以从左侧的嵌入式表中添加或删除行,而右侧的单元格将保持“合并”状态。您将很难使单元格边界对齐,但是如果没有它们,您仍然可以使它看起来不错,就像这样:

无国界:
And without borders