如何修改脚本将多工作表电子表格CSV自动保存至Google Drive文件夹
解决方案:将Google Sheets多工作表导出为CSV并保存到Google Drive
没问题,我帮你把脚本改成自动把每个工作表导出为CSV并保存到指定的Google Drive文件夹里。下面是完整的修改方案,关键部分我都标注得清清楚楚:
完整修改后的脚本
function saveSheetsAsCsvToDrive() { // 1. 获取你的电子表格实例(用当前活跃表格,也可以替换成指定表格ID) const spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // 若要指定固定表格,替换成:SpreadsheetApp.openById("你的表格唯一ID"); // 2. 指定要保存CSV的Drive文件夹ID(替换成你目标文件夹的ID) const targetFolderId = "你的Google Drive文件夹ID"; const targetFolder = DriveApp.getFolderById(targetFolderId); // 3. 遍历电子表格里的所有工作表 const sheets = spreadsheet.getSheets(); sheets.forEach(sheet => { const sheetName = sheet.getName(); console.log(`正在处理工作表:${sheetName}`); // 4. 将工作表数据转换为标准CSV格式文本 const csvContent = convertSheetToCsv_(sheet); // 5. 在目标文件夹创建CSV文件(默认重复名会生成带数字后缀的副本) targetFolder.createFile(`${sheetName}.csv`, csvContent, MimeType.CSV); console.log(`已保存 ${sheetName}.csv 到目标文件夹`); }); SpreadsheetApp.getUi().alert("所有工作表已成功导出为CSV并保存到Drive文件夹!"); } // 辅助函数:处理工作表到CSV的格式转换,兼容特殊字符 function convertSheetToCsv_(sheet) { const data = sheet.getDataRange().getValues(); // 处理CSV格式的转义逻辑:包含逗号、引号、换行的单元格会用双引号包裹,内部引号转义 return data.map(row => row.map(cell => { if (typeof cell === "string") { if (cell.includes(',') || cell.includes('"') || cell.includes('\n')) { return `"${cell.replace(/"/g, '""')}"`; } } return cell; }).join(',') ).join('\n'); }
关键细节说明
- 获取文件夹ID:打开你的Google Drive目标文件夹,地址栏里的一串随机字符就是文件夹ID(比如
https://drive.google.com/drive/folders/xxxxxx里的xxxxxx) - 覆盖旧文件设置:默认如果文件夹里已有同名CSV,会自动生成带数字后缀的副本。如果需要直接覆盖旧文件,可以在创建新文件前添加这段代码:
// 检查并删除同名旧文件(移至回收站) const existingFiles = targetFolder.getFilesByName(`${sheetName}.csv`); while (existingFiles.hasNext()) { existingFiles.next().setTrashed(true); // 若要彻底删除,替换为delete() } - 特殊字符兼容:辅助函数会自动处理包含逗号、引号或换行的单元格,避免CSV格式出错,保证导出的文件能正常被其他工具读取
使用步骤
- 打开你的Google Sheets电子表格
- 点击顶部菜单栏「扩展程序」→「Apps Script」
- 把原来的脚本替换成上面的代码
- 替换
targetFolderId为你的目标Drive文件夹ID - 点击运行按钮,首次运行需要授权脚本访问你的表格和Drive权限
- 运行完成后,直接去目标Drive文件夹查看生成的CSV文件即可
内容的提问来源于stack exchange,提问作者Manuel Alejandro




