我想将特定电子邮件中的gmail附件(.pdf文件)保存在特定的Google云端硬盘文件夹中。我还需要使用由电子邮件的某些字符串组成的字符串来重命名文件。
我已经使用带有某些功能的Google Apps脚本开发了一个简单的脚本。
这是我编写的主要功能:
function GmailToDrive() {
var query = '';
query = 'in:inbox from:noreply@agyo.io has:nouserlabels ';
var threads = GmailApp.search(query);
var label = getGmailLabel_(labelName);
var parentFolder;
if (threads.length > 0) {
parentFolder = getFolder_(folderName);
}
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();
var message_body = mesgs[j].getBody();
for (var k in attachments) {
var attachment = attachments[k];
var isDefinedType = checkIfDefinedType_(attachment);
if (!isDefinedType) continue;
var attachmentBlob = attachment.copyBlob();
var file = DriveApp.createFile(attachmentBlob);
file.setName(renameFile_(attachment, message_body))
parentFolder.addFile(file);
root.removeFile(file);
}
}
threads[i].addLabel(label);
}
}
checkIfDefinedType_(attachment)
函数检查附件是否为.pdf文件,而renameFile_(attachment, message_body)
重命名附件以从电子邮件中提取一些字符串。
该脚本似乎已正确开发,但有时我在Google驱动器文件夹中保存了两个或更多相同的附件。
答案 0 :(得分:0)
Stefano,如果与从https://bit.ly/-extractgmail改编的代码相同,我也会遇到同样的问题。
我删除了“ for(在fileTypesToExtract中的var i){”行,该行对我造成了重复。它正在为每种文件类型运行查询。