脚本无法正确转发电子邮件附件

问题描述

我正在使用以下脚本检查我的Gmail收件箱中是否有我已(手动或有规则)标记为购买发票的电子邮件,并将其自动转发到我的会计软件。

但是,.pdf附件(发票)无法正确转发:查看转发的电子邮件,附件不是真正的.pdf文件(请参见脚本下方的图像),我的会计软件无法访问.pdf。

有什么问题的指导吗?

function FwdInvoices() {
  var getLabel = GmailApp.getUserLabelByName('Purchase Invoice');
  var setLabel = GmailApp.getUserLabelByName('Purchase Invoice/Processed');
  var recipient = 'xxxxxxx@mail.autoentry.com';
  
  var userId = "me";
  var label = "Purchase Invoice/Processed";
  var labelId = Gmail.Users.Labels.list(userId).labels.filter(function(e){return e.name == label})[0].id;
  
  
  var threads = getLabel.getThreads();
  for (var i = 0; i < threads.length; i++) {
    
    var thread = threads[i];
    var message = thread.getMessages()[0];
    var messageId = message.getId()
    
    message.forward(recipient);

    thread.removeLabel(getLabel);
    //thread.addLabel(setLabel) - not using this - see below why
   
    //add label to message only (not thread - if label applied to whole thread the sent message will have label applied and show up in 'Processed' label view.
    Gmail.Users.Messages.modify({"addLabelIds": [labelId]},userId,messageId)
    
    //thread.movetoArchive()    
         
  }
   
}

这是附件的外观,几乎就像是通过驱动器链接文件而不是实际文件。如果单击它,则提示我选择一个云.pdf查看器,而不是通常的立即.pdf预览。

enter image description here

解决方法

使用GmailApp转发附件时,附件不会自动包含在内

但是,您可以轻松地通过advanced options手动添加它们。

示例:

    var message = thread.getMessages()[0];
    var messageId = message.getId();
    var attachments = message.getAttachments();
    message.forward(recipient,{attachments:attachments});