我正在尝试阅读我已经维护大约一年的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()
方法将使其全部正常工作。
答案 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行发生错误。