从标签线程获取最新的Gmail附件

时间:2018-09-13 12:03:50

标签: google-apps-script gmail

我正在尝试通过Google Apps脚本获取gmail中线程最新消息的最新附件。这是我所拥有的:

  //gets first(latest) message with set label
  var label = GmailApp.getUserLabelByName('SpecificLabel');
  var threads = label.getThreads();     
  var message = threads[0].getMessages();
  //message.reverse

  var attachment = message[threads[0].getMessageCount()-1].getAttachments()[0];
  var ss = SpreadsheetApp.getActive();
  var summarySht = ss.getSheetByName('Summary');
  var dbPullSht = ss.getSheetByName('Database Pull');

  Browser.msgBox(attachment.getContentType());
  // Is the attachment a CSV file
  if (attachment.getContentType() === 'text/csv') { 
     //do something
  }

我尝试用我注释掉的代码来反转消息。那似乎没有用。当前消息框将指出附件是图像。我认为它正在访问正确线程的正确消息,但它正在提取发件人签名中的图像。

这是它的工作方式。我将xls文件发送给某人。他们发回CSV文件。我需要那个CSV文件。

1 个答案:

答案 0 :(得分:0)

我创建了一个for循环来获取具有正确名称的附件。 这假定文件名将相同。

//gets first(latest) message with set label
var label = GmailApp.getUserLabelByName('SpecificLabel');
var threads = label.getThreads(0, 1);
var message = threads[0].getMessages();
message = message[message.length - 1];
var attachments = message.getAttachments();
for (var i = 0; i < attachments.length; i++) {
  if (attachments[i].getName() === 'filename.csv') {
    var attachment = attachments[i];
  }
}
var ss = SpreadsheetApp.getActive();
var summarySht = ss.getSheetByName('Summary');
var dbPullSht = ss.getSheetByName('Database Pull');

Browser.msgBox(attachment.getContentType());
Browser.msgBox(attachment.getName());
// Does the attachment name match?
if (attachment.getName() === 'filename.csv') {
  //do something
}

在继续执行代码之前,这还将检查文件名而不是文件类型。