如何在gmailapp中创建getAttachments()以从签名中排除图像?

时间:2017-03-24 13:33:09

标签: google-apps-script gmail email-attachments

我正在尝试阅读Gmail附件并将其推送到Google云端硬盘。除了一个小问题/ behavior之外,它的效果很好。

每当我调用getAttachments()方法时,它都包含与驱动器文件夹无关的内联签名图像。有没有办法排除签名图像(或完全内联图像),以便我只能推送附加的文件?

如果您想查看,以下是我的代码。

var threads = myLabel.getThreads(0,500); 
for (var threadIdx=0; threadIdx<threads.length; threadIdx++) {
    var thread = threads[threadIdx];
    var messages = thread.getMessages();
    for (var msgIdx=0; msgIdx<messages.length; msgIdx++) {
       var message = messages[msgIdx];
       var attachments = message.getAttachments();
    Logger.log(attachments.length);
    }
}

因此,当存在签名图像时,我总是将 attachments.length 比实际的附件数多一个。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

很抱歉迟到的回复,但我遇到了同样的问题并找到了解决方法,

您的message.getBody()方法将包含整个邮件正文。这还将包含签名图像名称。那么我们可以做什么,我们可以检查附件中的签名名称,如果我的正文包含这个签名名称,那么我应该发出该附件。这是代码段,

var textMessage = message.getBody();
   if (attachments.length > 0) {
        for (var z=0; z<attachments.length; z++) {
            var attachment = attachments[z];    
           if(textMessage.indexOf(attachment.getName()) === -1)
             {
               folder.createFile(attachment);
             }
        }
    }

我也检查了内联附件,此代码仅将其视为附件。

答案 1 :(得分:0)

使用

var attachments = message.getAttachments({
  includeInlineImages : false
});

代替

var attachments = message.getAttachments();

它将排除嵌入式图像。电子邮件中的签名也是嵌入式图像,在您的情况下,该图像将作为附件被提取。