按条件将Google Sheet多行导出至多个TXT文件的需求与求助
按A列分组导出行到TXT文件的Google Apps Script实现
你的核心需求是按A列的值分组导出:相同A列值的行合并到同一个TXT,唯一值的行单独生成文件。原代码是逐行生成文件,需要先对数据做分组处理,再批量创建文件。
修改后的代码
var folder = DriveApp.getFolderById('###'); // 替换为你的目标文件夹ID var files = folder.getFiles(); while (files.hasNext()) files.next().setTrashed(true); // 清空目标文件夹内的旧文件 // 1. 按A列(row[0])对数据进行分组 const groupedData = csvBalanceArray.reduce((groups, row) => { const groupKey = row[0]; // 以A列的值作为分组标识 if (!groups[groupKey]) { groups[groupKey] = []; } groups[groupKey].push(row); return groups; }, {}); // 2. 遍历分组结果,创建对应TXT文件 Object.entries(groupedData).forEach(([key, rows]) => { // 若A列值含非法文件名字符,可替换为合法字符,比如: // const validFileName = key.replace(/[<>:"/\\|?*]/g, '_'); const fileContent = rows.map(row => row.join(' ')).join('\n'); // 保持原行内空格拼接,行之间用换行分隔 folder.createFile(`${key}.txt`, fileContent); });
关键逻辑说明
- 分组处理:用
reduce方法遍历数组,将A列值相同的行归为同一组,最终得到一个以A列值为键、对应行数组为值的对象。 - 文件生成:遍历分组后的键值对,每个键对应一个TXT文件,文件内容是该组所有行按原格式拼接后的文本。
- 可选优化:如果A列值包含Google Drive不允许的文件名字符(如
<>:\"/\\|?*),可以用注释里的代码替换为下划线等合法字符,避免创建文件失败。
内容的提问来源于stack exchange,提问作者saashe
相关产品推荐
相关产品推荐

