如何使 gmailapp 中的 getAttachments() 从签名中排除图像?

How to make getAttachments() in gmailapp to exclude images from signature?

我正在尝试阅读 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 比实际附件数量多一个,当有签名图像时。

有人可以帮忙吗?

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

您的 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);
             }
        }
    }

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

使用

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

而不是

var attachments = message.getAttachments();

它将排除内联图像。电子邮件消息中的签名也是一个内联图像,在您的案例中被提取为附件。