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

如何在Google Apps Script中实现数组相加并合并表格列数据

解决Google Sheets跨表列数据相加的代码报错问题

错误原因分析

你碰到的报错核心问题很明确:

  • getValues()返回的是二维数组,而你最初把paste定义成了Range对象,source + paste会强制把两个对象转成字符串拼接,得到的是一串无意义的文本,而setValues()要求必须传入二维数组,所以参数类型不匹配才报错。

修正后的代码

var ss = SpreadsheetApp.getActiveSpreadsheet();
var dailySheet = ss.getSheetByName("Daily");
var monthlySheet = ss.getSheetByName("Monthly");

// 获取每日表指定范围的数据(10行1列的二维数组)
var dailyData = dailySheet.getRange(3, 2, 10).getValues();
// 获取月度表对应范围的现有数据(同样是10行1列的二维数组)
var monthlyData = monthlySheet.getRange(3, 2, 10).getValues();

// 遍历数组,将对应位置的数值相加(空单元格默认按0处理)
for (var i = 0; i < dailyData.length; i++) {
  dailyData[i][0] = (dailyData[i][0] || 0) + (monthlyData[i][0] || 0);
}

// 把相加后的结果写回月度表的指定范围
monthlySheet.getRange(3, 2, 10).setValues(dailyData);

关键注意点

  • 必须用getValues()把两个表的数据都转成二维数组,不能直接对Range对象做加法操作
  • 用|| 0处理空单元格,避免空值相加得到NaN(非数字)
  • setValues()传入的数组尺寸必须和目标Range完全一致(这里都是10行1列)

内容的提问来源于stack exchange,提问作者LewisP

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 19:36:20