You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:修改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("脚本执行完成");

关键说明

  1. ZIP附件识别:通过getContentType()判断是否为ZIP格式,确保只处理目标附件
  2. CSV筛选:通过文件名后缀.csv筛选内部文件,避免非CSV文件干扰
  3. 索引说明:数组索引从0开始,因此第二个CSV对应索引1
  4. 异常处理:新增了未找到ZIP或CSV数量不足的判断,避免脚本报错中断

内容的提问来源于stack exchange,提问作者nick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 22:47:46