当操作包含合并单元格(复制/移动)的范围,我总是得到“您的粘贴内容与合并单元格重叠。 请取消合并单元格,然后再试一次”。 但是,试图取消合并使用范围中的单元格时, Range#breakApart
,我得到另一个错误:“所选单元格无法合并。”,因为我不是要合并的任何事情更加混乱,我只是想以破碎细胞分开。
Answer 1:
原来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
)
);
}
}
(我已经添加五行/ COLS,而不是之一,因为越来越范围似乎是一个相当昂贵的过程)。 这工作得很好,只要你没有被添加额外的单元格合并为您扩大搜索区域做。
当涉及到合并单元格在电子表格中,谷歌Apps脚本API在至少通过以下方式从根本上打破:
- 没有办法让合并单元的范围的在片材/范围的阵列。
- 应该有一个办法,看看哪些细胞已被分割(
breakApart
只返回原始范围“为链接”)。 这使得它不可能拆分合并,然后让每个细胞都含有原合并单元格的内容。 - 尝试使用
breakApart
在仅包含合并单元格的一部分,应该还是掰开整个合并而不是抛出异常的范围。
所有的一切,因为它目前只站在API适用于电子表格其布局和使用脚本作者本人具有完全控制权。
文章来源: Split (break apart) merged table cells in google spreadsheet with an apps script