使用应用程序脚本合并 Google 文档中的表格单元格时出错

问题描述 投票:0回答:1

我正在尝试使用应用程序脚本合并 Google 文档中表格的顶行。 我收到错误,因此在一个简单的表上单独尝试了合并代码。同样的事情也会发生。

这是代码,它是文档中的示例。它似乎有效,但是当我切换回文档时,我收到错误并且必须重新加载。 我尝试过 Chrome 和 Firefox。 有什么想法吗?

错误截图

    function testMerge(){
      var doc = DocumentApp.getActiveDocument();
      var documentTab = doc.getActiveTab().asDocumentTab();
      var body = documentTab.getBody();

      // Example 2: Merge table cells
      // Create a two-dimensional array containing the table's cell contents.
      var cells = [
          ['Row 1, Cell 1', 'Row 1, Cell 2'],
          ['Row 2, Cell 1', 'Row 2, Cell 2']
      ];
      // Build a table from the array.
      var table = body.appendTable(cells);
      // Get the first row in the table.
      var row = table.getRow(0);
      // Get the two cells in this row.
      var cell1 = row.getCell(0);
      var cell2 = row.getCell(1);
      // Merge the current cell into its preceding sibling element.
      var merged = cell2.merge();
    }

第一行确实合并了,但我必须重新加载文件。 我现在可以继续编码,但如果我无法克服这一点,最终的产品将无法使用。

google-chrome google-apps-script google-docs
1个回答
0
投票

我猜您的问题可能与此问题跟踪器有关。 Ref 这似乎是一个错误。关于

merge the top row of a table in a Google Doc using app script
,在这种情况下,使用Google Docs API如下怎么样?

当你的显示脚本修改后,就会变成如下。

修改后的脚本:

在使用此脚本之前,请在高级 Google 服务中启用 Docs API

function myFunction() {
  var doc = DocumentApp.getActiveDocument();
  var documentTab = doc.getActiveTab().asDocumentTab();
  var body = documentTab.getBody();

  // Example 2: Merge table cells
  // Create a two-dimensional array containing the table's cell contents.
  var cells = [
    ['Row 1, Cell 1', 'Row 1, Cell 2'],
    ['Row 2, Cell 1', 'Row 2, Cell 2']
  ];
  // Build a table from the array.
  body.appendTable(cells);


  // --- I modified the below script.
  doc.saveAndClose();
  const id = doc.getId();
  const index = Docs.Documents.get(id).body.content.findLast(({ table }) => table).startIndex;
  const requests = [
    {
      mergeTableCells: {
        tableRange: {
          columnSpan: 2,
          rowSpan: 1,
          tableCellLocation: { tableStartLocation: { index }, rowIndex: 0, columnIndex: 0 }
        }

      }
    }
  ];
  Docs.Documents.batchUpdate({ requests }, id);
}

测试:

当此脚本运行到空文档时,将获得以下结果,并且没有错误消息。

enter image description here

参考资料:

© www.soinside.com 2019 - 2024. All rights reserved.