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

如何将Gmail中带~分隔符的TXT附件导入Google Sheet?

适配~分隔符TXT文件的Gmail到Google Sheet导入脚本修改方案

需求背景

每日接收一封带.txt附件的邮件,附件内容以~作为字段分隔符,需修改原有适配CSV的脚本,实现自动获取附件并导入Google Sheet,同时支持每日触发器运行。

原脚本问题点

原脚本存在以下需要调整的问题:

  1. 强行修改附件Content-Type的操作不必要,且可能导致判断逻辑失效
  2. 未实际执行清空旧数据的操作(仅保留注释)
  3. 存在API拼写错误(Utilities.parsecsv应为驼峰式的Utilities.parseCsv)
  4. 缺少对空数据或异常场景的基础处理

修改后的完整脚本

function importSearchResultsTXTFromGmail() {
  // 搜索指定发件人的邮件线程
  var threads = GmailApp.search("from:****@erusd.org");
  if (threads.length === 0) return; // 无匹配邮件时直接退出

  // 获取最新的一封邮件
  var messages = threads[0].getMessages();
  var message = messages[messages.length - 1];
  if (message.isRead()) return; // 已读取的邮件跳过,避免重复处理

  // 获取第一个附件
  var attachment = message.getAttachments()[0];
  if (!attachment) return; // 无附件时退出

  // 判断是否为TXT文件:通过文件名后缀或Content-Type双重校验
  var fileName = attachment.getName();
  var isTxtFile = fileName.toLowerCase().endsWith(".txt") || 
                  attachment.getContentType() === "text/plain";

  if (isTxtFile) {
    var sheet = SpreadsheetApp.getActiveSpreadsheet();
    var targetSheet = sheet.getSheetByName("Data");
    if (!targetSheet) return; // 目标工作表不存在时退出

    // 读取TXT内容,以~作为分隔符解析为二维数组
    var txtContent = attachment.getDataAsString();
    var parsedData = Utilities.parseCsv(txtContent, "~");

    // 清空旧数据(从第3行开始,保留前两行表头)
    var lastRow = targetSheet.getLastRow();
    if (lastRow >= 3) {
      targetSheet.getRange(3, 1, lastRow - 2, targetSheet.getLastColumn()).clearContent();
    }

    // </think_never_used_51bce0c785ca2f68081bfa7d91973934>
    // 写入</think_never_used_51bce0c785ca2f68081bfa7d91973934></think_never_used_51bce0c785ca2f68081bfa7d91973934>数据(仅当解析后有有效</think_never_used_51bce0c785ca2f68081bfa7d91973934>时执行)
    if (parsedData.length > 0 && parsedData[0].length > 0) {
      targetSheet.getRange(3, 1, parsedData.length, parsedData[0].length).setValues(parsedData);
      GmailApp.markMessageRead(message); // 标记邮件为已读
    }
  }
}

关键修改说明

  • 修正API拼写错误:将原脚本中的Utilities.parsecsv改为正确的驼峰式写法Utilities.parseCsv,确保数据解析功能正常运行
  • 附件类型判断优化:移除强行修改Content-Type的操作,改用文件名后缀(.txt)和官方标准Content-Type(text/plain)双重判断,逻辑更准确可靠
  • 新增异常处理:添加无匹配邮件、无附件、目标工作表不存在、已读邮件跳过等判断分支,避免脚本因异常场景报错中断
  • 实现清空旧数据:补充clearContent()执行代码,真正落实导入前清空旧数据的需求,同时增加行号校验避免越界
  • 数据写入校验:仅当解析后的数据非空时才执行写入操作,防止空数据覆盖工作表内容
  • 代码可读性优化:调整变量名为语义化命名,添加必要注释,便于后续维护和修改

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 10:06:19