如何将大数据CSV从gmail附件复制到Google表格中?

时间:2019-07-31 14:54:46

标签: google-apps-script

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

我已经尝试过不同的解决方案,但是似乎没有一个可以让我满意。下面的代码是我生成的最干净的代码,但是由于某种原因,它什么也不做,可能是由于需要复制的文件大小所致,因为可能有超过60万个数据单元。

格式: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);
    }
  } 
}

执行上面的代码时,虽然可以与较小的文件完美配合,但我没有得到任何结果,也没有出现错误。我不确定为什么会这样。

任何想法都将不胜感激。

谢谢!

0 个答案:

没有答案