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

跨工作簿复制工作表数据:copyTo与setValues报错求助

问题解决:跨工作簿复制数据的setValues报错修复

错误原因

setValues()方法要求传入的参数是二维数组类型的单元格数据,但你直接传入了Range对象(savecurrentweekrange),类型不匹配导致报错。另外跨工作簿场景下确实无法使用copyTo方法,该方法仅支持同工作簿内的范围复制。

修正后的代码

// 先确保当前工作簿对象已定义(如果是活动工作簿)
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("FormResponses");
var workresponsesheet = SpreadsheetApp.openById("1ahDB0n2Y0jMW0K5ewLplF905_KD6P_knsm84P_X_E6I");
var savecurrentweekrange = sheet.getRange("A2:T150");
// 提取源范围的二维数组数据
var sourceData = savecurrentweekrange.getValues();
var savelastweek = workresponsesheet.getSheetByName("lastweek");
var savelastweekrange = savelastweek.getRange("A2:T150");
  
savelastweekrange.setValues(sourceData);

优化建议(可选)

如果源数据的实际行数/列数不固定,建议动态匹配目标范围的大小,避免空值填充或范围不匹配的问题:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("FormResponses");
var workresponsesheet = SpreadsheetApp.openById("1ahDB0n2Y0jMW0K5ewLplF905_KD6P_knsm84P_X_E6I");
var savecurrentweekrange = sheet.getRange("A2:T150");
var sourceData = savecurrentweekrange.getValues();
// 获取源数据的实际行列数
var rowCount = sourceData.length;
var colCount = sourceData[0].length;
var savelastweek = workresponsesheet.getSheetByName("lastweek");
// 动态创建匹配源数据大小的目标范围
var savelastweekrange = savelastweek.getRange(2, 1, rowCount, colCount);
  
savelastweekrange.setValues(sourceData);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 17:14:58