Google Sheets脚本对比不同列取最值时列数不匹配报错问询
问题原因
你对问题的判断是正确的:"B"+ numberRange+":"+"D" + numberRange 会选中当前行的B、C、D三列,读取出来的values数组长度为3,下标0对应B列、1对应C列、2对应D列。而你调用setValues时传入的数组只有2个元素,和选中范围的3列长度不匹配,因此抛出对应异常。
修复方案
推荐直接单独操作B列和D列,不需要选中中间的C列,避免影响无关数据,修改后的代码如下:
function recordMaxSellPrice() { var sheet = SpreadsheetApp.getActiveSheet(); var numberRange = 4; for(var i= 0; i < 5;i++ ) { // 分别获取当前行B列和D列的单元格 var valueB = sheet.getRange("B" + numberRange).getValue(); var cellD = sheet.getRange("D" + numberRange); var valueD = cellD.getValue(); // 满足B列大于D列时,更新D列为二者最大值 if (valueB > valueD) { cellD.setValue(Math.max(valueB, valueD)); } numberRange++; } }
如果你希望沿用原有的连续范围写法,也可以按三列的结构赋值,保留C列原有数据即可,示例如下:
function recordMaxSellPrice() { var sheet = SpreadsheetApp.getActiveSheet(); var numberRange = 4; for(var i= 0; i < 5;i++ ) { var test = "B"+ numberRange+":"+"D" + numberRange; var range = sheet.getRange(test); var values = range.getValues()[0]; // 赋值时保留C列原值,只修改D列 range.setValues([[values[0], values[1], Math.max(values[0], values[2])]]); numberRange++; } }
内容的提问来源于stack exchange,提问作者Sjoerd Eeman
相关产品推荐
相关产品推荐

