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

跨文件夹谷歌表格数据复制求助:Sheet1转存至子文件夹ABC文件Sheet2

解决跨Google表格复制数据的问题

原代码的关键问题

  • getSheetValues(1,1,6,15) 参数顺序错误:该方法参数是起始行, 起始列, 行数, 列数,你要取A1:F15(15行6列),应该写成getSheetValues(1, 1, 15, 6)
  • 获取目标表格的方式错误:SpreadsheetApp.getActive().SpreadsheetByName('ABC') 是无效语法,当前活跃表格对象没有这个方法,得从Drive子文件夹里定位目标文件再打开
  • 目标区域的getRange(3,3,6,15) 参数同样顺序错误:C3:H17是15行6列,应该写成getRange(3, 3, 15, 6)

修正后的完整代码

function SendToSubT() {
  // 1. 获取当前表格Sheet1的目标区域数据
  var sourceSheet = SpreadsheetApp.getActive().getSheetByName('Sheet1');
  // 取A1:F15区域:起始行1,起始列1,15行,6列
  var record = sourceSheet.getSheetValues(1, 1, 15, 6);

  // 2. 定位子文件夹并找到目标表格"ABC"
  var subFolderId = "你的子文件夹ID"; // 替换成实际的sub-folder文件夹ID
  var subFolder = DriveApp.getFolderById(subFolderId);
  // 在子文件夹中搜索名为"ABC"的Google表格文件
  var targetFiles = subFolder.getFilesByName("ABC");
  if (!targetFiles.hasNext()) {
    throw new Error("子文件夹中未找到名为ABC的表格文件");
  }
  var targetFile = targetFiles.next();
  var targetSpreadsheet = SpreadsheetApp.open(targetFile);

  // 3. 将数据写入目标表格Sheet2的C3:H17区域
  var targetSheet = targetSpreadsheet.getSheetByName('Sheet2');
  // C3:H17:起始行3,起始列3,15行,6列
  targetSheet.getRange(3, 3, 15, 6).setValues(record);
}

关键说明

  • 区域参数对应:确保getSheetValues和getRange的行数、列数和实际区域匹配,A1:F15是15行(1到15)、6列(A到F),C3:H17同理是15行(3到17)、6列(C到H)
  • 跨文件定位:通过DriveApp.getFolderById定位子文件夹,再用getFilesByName找目标表格;如果文件夹内有重名文件,next()会取第一个,有多个的话需要额外处理
  • 权限提示:首次运行脚本会弹出权限申请窗口,按提示授权访问Drive和Spreadsheet服务即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 12:47:33