我通过电子邮件从扫描仪接收文档。
扫描仪无法更改主题。所有来自扫描仪的电子邮件主题都相同为“扫描到电子邮件服务器作业”。
但是,每个文件名都是唯一的。
谷歌将这些消息进行线程处理,通常我希望保持线程处理状态。
我运行脚本以提取PDF并放置在驱动器上,然后将该消息发送到垃圾箱。
问题是...未来的扫描会在整个线程上运行相同的脚本,因此每次运行脚本时,我都会得到许多完全相同的文档副本。
我在这里和其他地方查看了这个:使用Google脚本永久删除线程中的一个Gmail消息
threads[i].moveToTrash();
期望行为:不要在垃圾箱中的邮件上运行脚本。问题是,整个邮件线程都被标记为垃圾邮件。
实际行为:它会在整个邮件线程上运行脚本...即使来自同一发件人并具有相同主题的垃圾箱中的邮件也会被运行。
目标:永久删除邮件,以便脚本不会在具有相同主题的先前邮件上运行。
或者在收到附件后将主题更改为文件名,并在提取附件后停止对邮件进行排列。
或者添加一个适用于单个邮件(而不是线程)的标签,不会堵塞我的标签/文件夹。
此外,需要澄清的是,我不能仅检查文件名是否唯一......因为它们通常在驱动器中重命名。
来自http://www.googleappsscript.org/home/fetch-gmail-attachment-to-google-drive-using-google-apps-script的下面两行不起作用。 整个邮件线程将重新处理......所有附件将再次添加。
var root = DriveApp.getRootFolder();
for(var i in threads){
var mesgs = threads[i].getMessages();
for(var j in mesgs){
//get attachments
var attachments = mesgs[j].getAttachments();
for(var k in attachments){
var attachment = attachments[k];
var isImageType = checkIfImage_(attachment);
if(!isImageType) continue;
var attachmentBlob = attachment.copyBlob();
var file = DriveApp.createFile(attachmentBlob);
parentFolder.addFile(file);
root.removeFile(file);
}
}
threads[i].addLabel(label);
//ADDED BELOW TO MOVE TO TRASH
threads[i].moveToTrash();
threads[i].removeFromThread();
}
mesgs [j]
),获取其ID并将其与上述建议中提到的Users.messages:delete
方法一起使用。 - AMolina