Rap*_*ert 2 javascript google-sheets google-apps-script
当操作(复制/移动)包含合并单元格的范围时,总是出现错误“您的粘贴与合并单元格重叠。请取消合并单元,然后重试”。但是,当尝试使用取消合并范围中的单元格时Range#breakApart,我收到另一个错误:“无法合并所选的单元格。”由于我不尝试合并任何内容,这更加令人困惑,我只是在尝试打破细胞分开。
breakApart只有在调用它的范围包含所有合并的单元格,而不仅仅是合并区域的一部分时,结果才起作用。
这不会太糟。一旦意识到API中无法获取合并单元格的范围,问题就开始了。因此,解决此问题的最佳方法(到目前为止,我已经发现)是逐渐扩大范围,直到没有错误发生:
var breakRange = myRange;
for(;;) {
try {
breakRange.breakApart();
break;
} catch(e) {
breakRange = mySheet.getRange(
breakRange.getRowIndex(),
breakRange.getColumnIndex(),
Math.min(
breakRange.getHeight()+5,
mySheet.getMaxRows()-breakRange.getRowIndex()+1
),
Math.min(
breakRange.getWidth()+5,
mySheet.getMaxColumns()-breakRange.getColumnIndex()+1
)
);
}
}
Run Code Online (Sandbox Code Playgroud)
(我添加了五行/列而不是一列,因为获取范围似乎是一个相当昂贵的过程)。只要在扩展搜索区域时没有添加其他合并的单元格,此方法就可以很好地工作。
当涉及电子表格中的合并单元格时,Google Apps Scripts API至少在以下方面会从根本上被破坏:
breakApart仅返回“用于链接”的原始范围)。这使得不可能拆分合并,然后让每个单元格包含原始合并单元格的内容。breakApart在仅包含合并单元格一部分的范围内使用,仍应拆分整个合并,而不是抛出异常。总而言之,目前的API仅适用于电子表格,脚本作者自己可以完全控制这些电子表格的布局和使用情况。
| 归档时间: |
|
| 查看次数: |
4418 次 |
| 最近记录: |