代码之家  ›  专栏  ›  技术社区  ›  DanCue

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

  •  0
  • DanCue  · 技术社区  · 6 年前

    我正试图通过googleapps脚本获取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 回复  |  直到 6 年前
        1
  •  0
  •   TheMaster    6 年前

    我创建了一个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
    }