求助:修改Google Apps Script从邮件ZIP附件提取第二个CSV至Google Sheets
修改Google Apps Script处理ZIP附件中的第二个CSV文件
修改核心要点
- 识别邮件中的ZIP格式附件,忽略其他类型附件
- 解压ZIP文件后筛选出所有CSV文件,提取第二个(数组索引为1)
- 修正原代码中重复定义变量的冗余问题
完整修改后代码
// 获取标签下最新邮件 var sbhLabel = GmailApp.getUserLabelByName('sbh_channel'); var threads = sbhLabel.getThreads(0, 1); var messages = threads[0].getMessages(); var latestMessage = messages[messages.length - 1]; Logger.log("找到目标邮件"); // 定位ZIP附件 var attachments = latestMessage.getAttachments(); var zipAttachment = null; for (var i = 0; i < attachments.length; i++) { var att = attachments[i]; // 检查附件是否为ZIP格式 if (att.getContentType() === 'application/zip') { zipAttachment = att; break; } } if (!zipAttachment) { Logger.log("未找到ZIP附件,脚本终止"); return; } Logger.log("ZIP附件已获取"); // 移除指定标签 var newLabel = GmailApp.getUserLabelByName("new_12monthOtb"); var labelThreads = newLabel.getThreads(); for (var j = 0; j < labelThreads.length; j++) { labelThreads[j].removeLabel(newLabel); } Logger.log("标签已移除"); // 打开目标表格 var ss = SpreadsheetApp.openById("1DLCn9mwhwlKD6eCDGWVA119X_CL-zPOnQbPk_ncaDtE"); Logger.log("表格已打开"); // 定位目标工作表 var targetSheet = ss.getSheetByName("Mews"); Logger.log("目标工作表已找到"); // 解压ZIP并提取第二个CSV var unzippedFiles = Utilities.unzip(zipAttachment); var csvFiles = []; for (var k = 0; k < unzippedFiles.length; k++) { var file = unzippedFiles[k]; // 筛选CSV文件(通过文件名后缀判断) if (file.getName().toLowerCase().endsWith('.csv')) { csvFiles.push(file); } } if (csvFiles.length < 2) { Logger.log("ZIP中CSV文件数量不足2个,脚本终止"); return; } var targetCsv = csvFiles[1]; // 取第二个CSV(数组索引从0开始) // 解析CSV数据 var csvData = Utilities.parseCsv(targetCsv.getDataAsString('ISO-8859-1'), ","); Logger.log("CSV数据已加载"); // 将数据写入工作表 targetSheet.getRange(2, 2, csvData.length, csvData[0].length).setValues(csvData); Logger.log("数据已写入"); // 隐藏工作表 targetSheet.hideSheet(); Logger.log("工作表已隐藏"); Logger.log("脚本执行完成");
关键说明
- ZIP附件识别:通过
getContentType()判断是否为ZIP格式,确保只处理目标附件 - CSV筛选:通过文件名后缀
.csv筛选内部文件,避免非CSV文件干扰 - 索引说明:数组索引从0开始,因此第二个CSV对应索引
1 - 异常处理:新增了未找到ZIP或CSV数量不足的判断,避免脚本报错中断
内容的提问来源于stack exchange,提问作者nick
相关产品推荐
相关产品推荐

