我正在尝试使用应用程序脚本合并 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();
}
第一行确实合并了,但我必须重新加载文件。 我现在可以继续编码,但如果我无法克服这一点,最终的产品将无法使用。
我猜您的问题可能与此问题跟踪器有关。 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);
}
当此脚本运行到空文档时,将获得以下结果,并且没有错误消息。