将Gmail附件保存在Google云端硬盘中

时间:2019-04-01 16:39:28

标签: javascript google-apps-script

我想将特定电子邮件中的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驱动器文件夹中保存了两个或更多相同的附件。

1 个答案:

答案 0 :(得分:0)

Stefano,如果与从https://bit.ly/-extractgmail改编的代码相同,我也会遇到同样的问题。

我删除了“ for(在fileTypesToExtract中的var i){”行,该行对我造成了重复。它正在为每种文件类型运行查询。