You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 15:27:00