请求电子表格范围值返回“您必须选择合并范围内的所有单元格...”

时间:2019-07-17 18:54:21

标签: google-apps-script google-sheets

我正在尝试阅读我已经维护大约一年的Google电子表格中的单个单元格范围。今天,我的日志中出现以下错误:

  

您必须选择合并范围内的所有单元格才能合并或取消合并它们。

该工作表中没有任何合并的单元格。我注意到Range方法也有一个“ isPartOfMerge()”方法。在返回的Range对象上尝试此操作会产生与以前相同的错误。

var sht_settings = ss.getSheetByName('Settings');
// lots of code in between
var reg_rate = sht_settings.getRange("B9").getValue();

通常,我会得到一个与单元格中的值相关的整数,例如“ 20”或“ 35”。现在,只需报告错误即可。

更新:发现了引起问题的行。运行以下顺序可以读取正确的值。

var reg_rate = sht_settings.getRange(9, 2).getValue();
new_sht.getRange("F3:G3").merge().setValue('INVOICE').setFontSize(18).setFontWeight('bold').setHorizontalAlignment('right');

通过将getRange()方法更改为引用单个单元格并删除merge()方法将使其全部正常工作。

1 个答案:

答案 0 :(得分:1)

仅供参考,以供处理相同问题的任何人

发现该问题正在编辑代码正在更新的另一张纸。另一张纸合并了单元格,格式略有更改。现在,代码检索的范围与合并的单元格重叠。要解决此问题,请删除另一张工作表中的所有合并,然后重新运行代码。

脚本没有在涉及合并/更新的那些行上报告这些更改,而是在其他地方报告了更改。

检查以下我创建的电子表格以测试该问题:https://docs.google.com/spreadsheets/d/14Ym0GQl3fMhlHljGfWZeUbZRTJMQ53vrA3BYBjbNISU/edit?usp=sharing

脚本编辑器中的代码类似于

Views/Foo

“ Sheet1”包含B1和B2中的值,“ Sheet2”为空白,但合并的单元格为B2:C2。

在此示例中,运行var ss = SpreadsheetApp.getActiveSpreadsheet(); var sht1 = ss.getSheetByName('Sheet1'); var sht2 = ss.getSheetByName('Sheet2'); function myFunction() { var val1 = sht1.getRange(1, 2).getValue(); sht2.getRange(2, 2, 1, 2).merge().setValue(val1); var val2 = sht1.getRange(2, 2).getValue(); sht2.getRange(3, 2, 1, 2).merge().setValue(val2); } 将在第8行而不是第7行发生错误。