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

如何将Gmail中Excel XLS附件数据导入Google Sheet并覆盖原有数据

适配XLS附件的Google Apps Script修改方案

背景

你精通VBA但刚接触GAS,现有CSV导入脚本无法处理每日收到的主题为“HBI Inventory Detail”的邮件附件(XLS格式,文件名及唯一工作表名均为“HBI Inventory Detail Email.xls”),以下是修改后的可运行代码及关键说明:

修改后完整代码

function importXLSFromGmail() {
  // 搜索指定主题的最新邮件线程
  var threads = GmailApp.search("HBI Inventory Detail");
  var message = threads[0].getMessages()[0];
  var attachment = message.getAttachments()[0];

  // 定位目标数据工作表
  var targetSheet = SpreadsheetApp.openById('1ZcuTKNxa9kVSxt36UyA5cpCqGDRVK6eCTsTcz20gxWw').getSheetByName('Data');
  
  // 临时上传XLS附件到Drive并转换为Google表格
  var tempFile = DriveApp.createFile(attachment);
  var tempSpreadsheet = SpreadsheetApp.open(tempFile);
  // 匹配附件内的目标工作表
  var sourceSheet = tempSpreadsheet.getSheetByName("HBI Inventory Detail Email.xls");

  // 获取源工作表所有数据
  var sourceData = sourceSheet.getDataRange().getValues();

  // 清空目标表并写入数据
  targetSheet.clearContents().clearFormats();
  targetSheet.getRange(1, 1, sourceData.length, sourceData[0].length).setValues(sourceData);

  // 删除临时文件(可选,清理Drive冗余文件)
  DriveApp.getFileById(tempFile.getId()).setTrashed(true);
}

关键改动说明

  • XLS文件解析逻辑:GAS无直接解析XLS的内置方法,需先将附件上传到Drive自动转为Google表格(类比VBA中Workbooks.Open打开XLS文件的操作)。
  • 临时文件管理:创建临时文件用于数据读取,完成后标记为删除,避免占用Drive存储空间。
  • 精准工作表匹配:直接指定你提供的工作表名,确保读取正确的数据区域。
  • 数据读写逻辑:保持与原CSV脚本一致的写入逻辑,降低学习成本,同时用getDataRange()获取源表所有数据(类比VBA中UsedRange)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 11:24:16