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

跨Google Sheets复制最后一行至目标空白行失败求助

解决跨Google Sheets复制行的报错问题

问题原因

copyTo()方法仅支持同一Spreadsheet文件内的工作表间复制操作,跨文件调用就会抛出Exception: Target range and source range must be on the same spreadsheet错误。

修正后的代码

通过先读取源行数据、再写入目标表格的方式实现跨文件复制:

function moveRows() {
  // 标识源表格与目标表格
  let ss = SpreadsheetApp.openById('1PugO3VL8ZkGzA6zcYfUkQK4WkU-FfRUBHUzRDTmEbYE');
  let target = SpreadsheetApp.openById('17my-WAAVkZK8m541dH50japQZYQY4WEC_vm12-fCKR8');
  let source_sheet = ss.getSheetByName('Sheet2');
  let target_sheet = target.getSheetByName('Sheet1');

  // 获取源表格最后一行的已填充数据
  let sourceLastRow = source_sheet.getLastRow();
  let sourceData = source_sheet.getRange(sourceLastRow, 1, 1, 10).getValues();

  // 获取目标表格的首个空白行
  let targetLastRow = target_sheet.getLastRow();
  let targetRange = target_sheet.getRange(targetLastRow + 1, 1, 1, sourceData[0].length);

  // 将数据写入目标表格
  targetRange.setValues(sourceData);
}

关键修改说明

  • 替换copyTo()为getValues()+setValues()组合:跨文件场景下,必须先读取数据为二维数组,再写入目标范围
  • 优化源数据获取逻辑:原代码依赖activeRange,改成直接取源表最后一行,更贴合你“复制最后一行已填充数据”的需求
  • 动态匹配列数:用sourceData[0].length自动匹配目标范围的列数,避免硬编码导致的行列不匹配问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 14:40:28