在谷歌电子表格中用应用程序脚本分割(拆分)合并表格单元格。

当操作(复制移动)包含合并单元格的范围时,我总是得到 “您的粘贴与合并单元格重叠。请取消合并单元格并再次尝试”。但是,当我试图用以下方法解除合并单元格时,我总是得到 “您的粘贴与合并单元格重叠 “的错误信息。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
      )
    );
  }
}

(我增加了五个rowscols而不是一个,因为获取范围似乎是一个相当昂贵的过程)。只要你在扩大搜索范围时没有额外的合并单元格被添加,这个方法就很好用。

当涉及到电子表格中的合并单元格时,Google Apps Scripts API至少在以下几个方面存在根本性的问题。

  1. 没有办法获得合并单元格在sheetrange中的范围数组。
  2. 应该有一种方法来查看哪些单元格被拆分了(breakApart 只返回 “用于链式 “的原始范围)。) 这就不可能拆分合并,然后让每个单元格都包含原始合并单元格的内容。
  3. 试图使用 breakApart 的范围内,如果只包含合并单元格的一部分,则仍应将整个合并拆开,而不是抛出一个异常。

总而言之,目前的 API 只适用于脚本作者自己可以完全控制其布局和使用的电子表格。

给TA打赏
共{{data.count}}人
人已打赏
未分类

无法刮取所有产品的色板。

2022-9-8 17:14:20

未分类

只对所需的Node_modules进行内嵌的babel转置。

2022-9-8 17:14:22

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索