如何用脚本将Google Sheet的50个工作表转为独立电子表格并收集URL
解决方案:拆分Google Sheet工作表为独立文件并汇总URL
步骤1:准备必要ID
- 目标Drive文件夹ID:打开指定文件夹,地址栏末尾的字符串即为ID(例如
https://drive.google.com/drive/folders/XXXXXX中的XXXXXX) - 汇总URL的目标Google Sheet ID:打开目标汇总表,地址栏中
d/与/edit之间的字符串即为ID - 源Sheet ID:若当前操作的就是源文件,可直接用
SpreadsheetApp.getActiveSpreadsheet().getId()替代手动填写
步骤2:编写Google Apps Script
打开源Google Sheet,点击「扩展程序」→「Apps Script」,替换默认代码为以下内容:
function splitSheetsToFiles() { // 配置参数,替换为你的实际ID const sourceSpreadsheetId = SpreadsheetApp.getActiveSpreadsheet().getId(); const targetFolderId = "你的目标Drive文件夹ID"; const summarySheetId = "你的汇总URL的SheetID"; // 初始化资源 const sourceSpreadsheet = SpreadsheetApp.openById(sourceSpreadsheetId); const targetFolder = DriveApp.getFolderById(targetFolderId); const summarySpreadsheet = SpreadsheetApp.openById(summarySheetId); const summarySheet = summarySpreadsheet.getSheetByName("汇总表") || summarySpreadsheet.insertSheet("汇总表"); // 重置汇总表并设置表头 summarySheet.clearContents(); summarySheet.getRange("A1:C1").setValues([["原工作表名称", "创建时间", "新文件URL"]]); // 遍历所有工作表 const sheets = sourceSpreadsheet.getSheets(); let currentRow = 2; sheets.forEach(sheet => { const sheetName = sheet.getName(); // 可添加跳过规则,比如跳过汇总表:if (sheetName === "汇总表") return; // 创建新电子表格 const newSpreadsheet = SpreadsheetApp.create(sheetName, sheet.getMaxRows(), sheet.getMaxColumns()); // 移动到指定文件夹 const newFile = DriveApp.getFileById(newSpreadsheet.getId()); targetFolder.addFile(newFile); DriveApp.getRootFolder().removeFile(newFile); // 复制原表数据(保留值和格式) const sourceRange = sheet.getDataRange(); const targetRange = newSpreadsheet.getSheets()[0].getRange(1, 1, sourceRange.getNumRows(), sourceRange.getNumColumns()); sourceRange.copyTo(targetRange, SpreadsheetApp.CopyPasteType.PASTE_VALUES_AND_FORMATTING, false); // 记录到汇总表 summarySheet.getRange(currentRow, 1).setValue(sheetName); summarySheet.getRange(currentRow, 2).setValue(new Date()); summarySheet.getRange(currentRow, 3).setValue(newSpreadsheet.getUrl()); currentRow++; // 避免触发API限制,每处理10个表暂停1秒 if (currentRow % 10 === 0) Utilities.sleep(1000); }); SpreadsheetApp.getUi().alert("拆分完成,URL已汇总至指定表格!"); }
步骤3:配置并运行脚本
- 替换代码中
targetFolderId和summarySheetId为你的实际ID - 点击运行按钮,首次运行需完成权限授权(允许脚本访问Drive和Sheet)
- 等待运行完成,检查目标文件夹和汇总表
关键注意事项
- API配额:50个工作表的操作在Google每日配额范围内,若后续拆分数量增加,建议分批处理
- 数据保留规则:当前脚本复制值和格式,若需保留公式,将
PASTE_VALUES_AND_FORMATTING改为PASTE_NORMAL - 重名处理:目标文件夹存在同名文件时,新文件会自动添加后缀(如「Sheet1 (1)」)
- 跳过特定表:在
sheets.forEach循环中添加判断语句,可跳过不需要拆分的工作表
内容的提问来源于stack exchange,提问作者Essem
相关产品推荐
相关产品推荐

