javascript - 在 Doc Google 表格中编写 Google 合并单元格脚本
问题描述
我尝试编写一个脚本以合并 Google 文档中的 2 个(或多个)单元格。无论如何,结果并不像我预期的那么好,因为我刷新页面时出错,并且视觉上合并的单元格不长表合并的结果和初始表在此处输入图像描述
我的谷歌脚本是:
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() 方法与表格单元格一起使用的方式的错误。脚本 .merge() 将元素的内容与前一个元素的内容组合在一起,然后删除第二个元素。这实际上与合并单元格(在文档中)的工作方式不同。当您从文档中合并单元格时,它实际上并没有删除任何元素,只是更改了显示,以便您无法访问“隐藏”单元格。如果您在包含合并单元格的行上调用 getNumChildren() ,它仍然具有完整的列数。
在单元格上运行 .merge() 会删除第二个孩子,并且似乎创建了一个不允许的表结构,这可能是它引发错误的原因。
顺便说一句,您可以在单元格上调用 .getRowSpan() 方法,该方法为正常单元格返回 1,为合并单元格返回 0,但是,不方便的是,没有“setRowSpan()”,所以它看起来不像您可以从脚本中进行常规样式合并。
几年前这里有一个类似的问题。
这里也是谷歌列出的错误。它来自 5(!)年前。你可以尝试在那里发帖。
也许您可以尝试使用脚本复制内容并更改单元格之间的边框样式/宽度,但这似乎是一个巨大的痛苦。祝你好运!
推荐阅读
- android - 任务“:app:mergeDevDebugResources”执行失败
- git - 更改分支时不要删除 .gitignore 中的本地文件
- angular - Angular/HTML 中的 NgIf 和 NgElse
- javascript - 如何安全地公开显示 Firestore 子集合的 UID
- python - 如何为 scipy.signal.find_peaks 指定阈值
- django - 如何在 Django 中制作可重用的页面片段?
- optaplanner - 在 OptaPlanner 的约束中使用 HardMediumSoftScore 时出现异常
- javascript - 如何在html标签中显示链接
- install4j - install4j v9.0后如何检测windows代理设置
- react-native - React Native-Styling Tab Navigator