如何用Google Apps Script拆分指定Google Sheets标签页为独立文件
Google Sheets 拆分指定标签页为独立文件(支持Inputs标签页配置)
核心实现方案
完全可以通过主文件中Inputs标签页的配置来执行拆分操作,下面是可直接使用的Google Apps Script代码,支持宏调用,同时兼容自定义文件名配置:
function splitSheetsFromInputs() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const inputSheet = ss.getSheetByName("Inputs"); if (!inputSheet) { SpreadsheetApp.getUi().alert("未找到名为'Inputs'的标签页,请检查后重试"); return; } // 读取Inputs标签页的配置数据(跳过表头,假设第一行是表头) const configData = inputSheet.getDataRange().getValues().slice(1); if (configData.length === 0) { SpreadsheetApp.getUi().alert("Inputs标签页中没有可处理的配置数据"); return; } const parentFolder = DriveApp.getFileById(ss.getId()).getParents().next(); // 循环处理每个配置项 configData.forEach(row => { const sourceSheetName = row[0]; const targetFileName = row[1]; if (!sourceSheetName || !targetFileName) { SpreadsheetApp.getUi().alert(`配置行存在空值:标签名[${sourceSheetName}] 目标文件名[${targetFileName}],已跳过该行`); return; } const sourceSheet = ss.getSheetByName(sourceSheetName); if (!sourceSheet) { SpreadsheetApp.getUi().alert(`未找到名为[${sourceSheetName}]的标签页,已跳过该行`); return; } // 创建新的Google Sheets文件 const newSs = SpreadsheetApp.create(targetFileName); const newSheet = newSs.getActiveSheet(); // 复制源标签页的所有数据(含格式)到新文件 sourceSheet.copyTo(newSs); newSs.deleteSheet(newSheet); // 删除默认创建的空白标签页 // 将新文件移动到原文件所在目录 DriveApp.getFileById(newSs.getId()).moveTo(parentFolder); SpreadsheetApp.getUi().alert(`已完成拆分:${sourceSheetName} → ${targetFileName}`); }); }
使用步骤
- 配置Inputs标签页:
- 在主文件中创建名为
Inputs的标签页 - 第一列(A列)填写待拆分的源标签页名称(如
Toyota) - 第二列(B列)填写对应生成的独立文件名称(如
丰田销售数据2024) - 第一行可设置表头(如
源标签名、目标文件名),脚本会自动跳过表头行
- 在主文件中创建名为
- 设置宏调用:
- 打开主文件的脚本编辑器(工具→脚本编辑器)
- 将上述代码粘贴进去,保存项目(命名如
SheetSplitter) - 返回主文件,点击「扩展程序→宏→管理宏」
- 找到
splitSheetsFromInputs函数,点击「添加宏」,可设置快捷键(可选)
- 执行拆分:
- 直接点击宏列表中的
splitSheetsFromInputs,或使用设置的快捷键 - 脚本会弹出提示框告知每个拆分项的处理结果,完成后可在原文件所在的Google Drive目录下找到生成的独立文件
- 直接点击宏列表中的
注意事项
- 首次执行脚本会要求授权,按提示完成权限申请即可
- 若目标文件名已存在,Google Drive会自动添加后缀(如
(1))避免重名 - 源标签页的格式、公式会被完整复制到新文件中
内容的提问来源于stack exchange,提问作者Jackson Smith
相关产品推荐
相关产品推荐

