首页 > 解决方案 > 如何将 gmail 附件中的大数据 CSV 复制到谷歌表格中?

问题描述

我正在尝试从共享电子邮件中位于特定文件夹中的 CSV 报告中获取数据,并将 Google 表格中特定选项卡中的旧数据替换为新数据。

我已经尝试了不同的解决方案,但似乎没有一个能把我带到我想要的地方。下面的代码是我生成的最干净的代码,但由于某种原因,它什么也没做,可能是因为需要复制的文件的大小,因为可能有超过 600000 个数据单元。

格式:https ://docs.google.com/spreadsheets/d/1GyGxSwUtITeje0-Qx63rB8xChMSbLvn1FDCOKOJITio/edit?usp=sharing

我已经尝试了不同的解决方案,但似乎没有一个能把我带到我想要的地方。下面的代码是我生成的最干净的代码,但由于某种原因,它什么也没做,可能是因为需要复制的文件的大小。

function importCSVFromGmail() {
  var threads = GmailApp.search("label:its {to:sharedemail@company.com} newer_than:1d");
  var message = threads[0].getMessages().pop();

  var attachment = message.getAttachments()[0];

  if (attachment != null) {
    var attachName = attachment.getName();

    // Is the attachment a CSV file
    if (attachName.substring(attachName.length-4) === ".csv") {
      var id = "1GyGxSwUtITeje0-Qx63rB8xChMSbLvn1FDCOKOJITio";
      var name = "ALLDATA";
      var sheet = SpreadsheetApp.openById(id);
      var tab = sheet.getSheetByName(name);
      var tabInfo = sheet.getSheetByName("INFO");
      tabInfo.getRange("B1").setValue(new Date());

      // Clear the content of the sheet
      tab.clearContents().clearFormats();
      var csvData = Utilities.parseCsv(attachment.getDataAsString(), ",");
      tab.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);
    }
  } 
}

执行上述代码时,我没有得到任何结果,也没有错误,尽管它可以完美地处理较小的文件。我不确定为什么会这样。

任何想法将不胜感激。

谢谢!

标签: google-apps-script

解决方案


推荐阅读