跨文件夹谷歌表格数据复制求助: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
相关产品推荐
相关产品推荐

