如何将Google Sheet指定标签页归档到Drive文件夹的单个表格
解决方案:合并多标签页为单个Google Sheet归档
优化后的脚本
以下脚本会直接创建一个新的Google Sheet,将你指定的7个标签页全部复制到其中,生成单一归档文件,无需导出XLSX:
function archiveWeeklySheets() { // 配置:填写需要归档的标签页信息(表格ID和标签页名称) const sheetsToArchive = [ {spreadsheetId: "[ID OF TAB 1]", sheetName: "Main Camden Timesheet"}, {spreadsheetId: "[ID OF TAB 2]", sheetName: "BRERCY Timesheet"}, {spreadsheetId: "[ID OF TAB 3]", sheetName: "BP Timesheet"}, {spreadsheetId: "[ID OF TAB 4]", sheetName: "CTW Timesheet"}, {spreadsheetId: "[ID OF TAB 5]", sheetName: "CUE Timesheet"}, {spreadsheetId: "[ID OF TAB 6]", sheetName: "DD Timesheet"}, {spreadsheetId: "[ID OF TAB 7]", sheetName: "USG Timesheet"} ]; // 获取归档文件名(沿用你原脚本的日期来源) const mainSheet = SpreadsheetApp.getActive().getSheetByName('Main Camden Timesheet'); const datePrefix = mainSheet.getRange(5, 3).getValue(); const archiveFileName = `${datePrefix} - Weekly Timesheet Archive`; // 创建新的归档Google Sheet const archiveSpreadsheet = SpreadsheetApp.create(archiveFileName); const archiveId = archiveSpreadsheet.getId(); // 遍历每个需要归档的标签页,复制到新表格 sheetsToArchive.forEach(item => { const sourceSpreadsheet = SpreadsheetApp.openById(item.spreadsheetId); const sourceSheet = sourceSpreadsheet.getSheetByName(item.sheetName); // 复制标签页到归档表格,保留格式和数据 sourceSheet.copyTo(archiveSpreadsheet); }); // 可选:删除新表格默认的"Sheet1" const defaultSheet = archiveSpreadsheet.getSheetByName("Sheet1"); if (defaultSheet) { archiveSpreadsheet.deleteSheet(defaultSheet); } // 可选:将归档表格移动到指定Drive文件夹(取消注释并填写文件夹ID) // const targetFolder = DriveApp.getFolderById('[ID OF GOOGLE DRIVE FOLDER]'); // DriveApp.getFileById(archiveId).moveTo(targetFolder); console.log(`归档完成:${archiveFileName}`); }
关键说明
- 配置部分:将
sheetsToArchive数组里的spreadsheetId替换为你实际的表格ID,确保sheetName和目标标签页名称一致 - 文件名生成:沿用你原脚本的逻辑,从
Main Camden Timesheet的C5单元格获取日期前缀,生成统一的归档文件名 - 复制逻辑:使用
copyTo方法直接复制整个标签页,保留原有的格式、数据和公式,比导出XLSX再导入更高效 - 可选操作:可以删除默认的Sheet1,也可以指定Drive文件夹存放归档文件,取消对应注释即可
使用方法
- 打开你的Google Sheet,进入「扩展程序」→「Apps脚本」
- 删除原有代码,粘贴上述优化后的脚本
- 替换所有占位符(
[ID OF TAB X]等) - 保存并运行
archiveWeeklySheets函数,首次运行需要授权权限
内容的提问来源于stack exchange,提问作者Matt P
相关产品推荐
相关产品推荐

