使用Google Script从Gmail获取附件

时间:2017-09-29 15:52:07

标签: google-apps-script google-sheets gmail google-sheets-api

所以我构建了一个电子表格,从2个不同的来源获取2个报告,然后将它们导入到工作表中。其中一个报告是每小时发送到我的电子邮件的CSV文件。

我工作的剧本......主要是。它将检查我的电子邮件中的线程,提取消息,然后将附件导入工作表。问题是当下一个小时收到下一封电子邮件并且脚本再次运行时,它不会拉出最新的附件,它只会拉出第一个附件。我甚至试图在每次运行时都将邮件移到我的垃圾箱中,但它仍然会将其从垃圾箱中拉出来。这是我的代码。

function importReport() {

  var threads = GmailApp.search('in:inbox from:"system@Report.com"');
  var message = threads[0].getMessages()[0];
  var attachment = message.getAttachments()[0];
  attachment.setContentType('text/csv');

 // Is the attachment a CSV file
 if (attachment.getContentType() === "text/csv") {

    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("RawReport");
    var csvData = Utilities.parseCsv(attachment.getDataAsString(), ",");

  // Remember to clear the content of the sheet before importing new data
   sheet.clearContents().clearFormats();
   sheet.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);

 GmailApp.moveMessageToTrash(message);
  }


}

目标是拉动整个线程,然后导入最新的附件,任何建议吗?

2 个答案:

答案 0 :(得分:2)

您应该尝试从Gmail主题而不是第一封邮件中提取最后一条消息。

var messages = threads[0].getMessages();
var message = messages[messages.length - 1];

答案 1 :(得分:1)

感谢用户@AmitAgarwal,修复方法如下:

tr

这将下载整个帖子,并获取最新的附件。

我遇到的另一种解决方案是在拉动后反转阵列。

td