跨工作簿复制工作表数据: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
相关产品推荐
相关产品推荐

