Google Sheets脚本实现:如何将工作表复制到新文件?
解决Google Sheets中复制工作表到新文件的问题
完整实现代码
function EXPORT() { const ss = SpreadsheetApp.getActiveSpreadsheet(); // 1. 复制SOURCE工作表内容 const sourceSheet = ss.getSheetByName('SOURCE'); const sourceRange = sourceSheet.getDataRange(); // 2. 粘贴值和格式到TEMP工作表 const tempSheet = ss.getSheetByName('TEMP'); tempSheet.clearContents(); sourceRange.copyTo(tempSheet.getRange('A1'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); sourceRange.copyTo(tempSheet.getRange('A1'), SpreadsheetApp.CopyPasteType.PASTE_FORMATS, false); // 3. 将TEMP工作表复制到新文件 const newSpreadsheet = SpreadsheetApp.create('导出结果'); tempSheet.copyTo(newSpreadsheet); // 移除新文件默认的Sheet1(可选操作) newSpreadsheet.deleteSheet(newSpreadsheet.getSheetByName('Sheet1')); // 可选:根据单元格内容自定义文件名(示例取SOURCE表A1单元格值) // const customFileName = sourceSheet.getRange('A1').getValue(); // newSpreadsheet.rename(customFileName); }
关键说明
- 摒弃
Select/Activate操作:Google Apps Script无需像Excel VBA那样依赖单元格选择,直接操作工作表、范围对象更高效,也避免了选择状态导致的错误。 - 复制工作表到新文件:
tempSheet.copyTo(newSpreadsheet)对应手动操作里的「复制到→新电子表格」功能,新建文件后直接将指定工作表复制过去。 - 自定义文件名:取消注释最后两行代码,替换
A1为你存储文件名的单元格地址即可实现需求。
排查要点
- 确认工作表名称完全匹配:
SOURCE和TEMP要与实际工作表名一致,注意大小写区分。 - 权限授权:首次运行脚本会弹出权限申请,需允许脚本访问你的Google Sheets文件。
- 错误处理:若出现「找不到工作表」或「权限不足」提示,优先检查名称拼写和授权状态。
内容的提问来源于stack exchange,提问作者Tim Harris
相关产品推荐
相关产品推荐

