如何在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
相关产品推荐
相关产品推荐

