我正在尝试阅读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 比实际的附件数多一个。
有人可以帮忙吗?
答案 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();
它将排除嵌入式图像。电子邮件中的签名也是嵌入式图像,在您的情况下,该图像将作为附件被提取。