Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在谷歌硬盘上保存Gmail附件_Javascript_Google Apps Script - Fatal编程技术网

Javascript 在谷歌硬盘上保存Gmail附件

Javascript 在谷歌硬盘上保存Gmail附件,javascript,google-apps-script,Javascript,Google Apps Script,我想将特定电子邮件中的gmail附件(.pdf文件)保存在特定的Google Drive文件夹中。我还需要用一个由电子邮件字符串组成的字符串重命名文件 我已经开发了一个简单的脚本使用谷歌应用程序脚本与一些功能 这是我写的主要功能: function GmailToDrive() { var query = ''; query = 'in:inbox from:noreply@agyo.io has:nouserlabels '; var threads = GmailAp

我想将特定电子邮件中的gmail附件(.pdf文件)保存在特定的Google Drive文件夹中。我还需要用一个由电子邮件字符串组成的字符串重命名文件

我已经开发了一个简单的脚本使用谷歌应用程序脚本与一些功能

这是我写的主要功能:

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_(附件)
功能检查附件是否为.pdf文件,以及
renameFile_(附件,邮件\u正文)
重命名附件,从电子邮件中提取一些字符串


脚本似乎开发正确,但有时我的google drive文件夹中保存了两个或多个相同的附件。

Stefano,如果这是改编自的相同代码,我也有同样的问题


我删除了“for(fileTypesToExtract中的var I){”这一行,这导致了我的重复。它正在为每种文件类型运行查询。

Stefano,如果这是从中改编的代码,我也有同样的问题


我删除了“for(fileTypesToExtract中的var I){”这一行,这导致了我的重复。它正在为每种文件类型运行查询。

Welcome。“但有时我会在我的google drive文件夹中保存两个或更多相同的附件。”我不明白这意味着什么;请您详细解释一下好吗?另外,
GmailToDrive
的代码是众所周知和可靠的,但我不记得看到过额外的代码行
file.setName(重命名文件(附件,消息体))
;请提供此功能的代码。该脚本根据查询参数扫描所有Gmail项目,并且必须将未标记邮件的附件保存到Google Drive。该脚本每30分钟运行一次,有时一些附件在Google Drive文件夹中保存多次。
file.setName
是Google应用程序类文件()的脚本函数。此函数的参数是由函数
renameFile(附件,邮件体)
获取的字符串,该函数从电子邮件文本中提取一些字符串并将它们连接成单个字符串“有时某些附件在Google Drive文件夹中保存了多次”问题是什么?代码应该寻找重复,而不是两次处理?也许甚至删除复制品?只有在没有用户标签和保存附件的情况下,脚本才处理所有的Gmail邮件。我不明白为什么脚本再次标记邮件,因此再次保存附件。我们可以考虑。“复制控制”标签在处理后添加到mal中。可能我把一些条件放在了不正确的地方…欢迎。”但有时我会在我的google drive文件夹中保存两个或更多相同的附件。“我不明白这意味着什么;请您更详细地解释一下好吗?另外,
GmailToDrive
的代码是众所周知的和可靠的,但我不记得看到过额外的代码
file.setName(重命名文件\附件,消息\正文))
;请提供此功能的代码。该脚本根据查询参数扫描所有Gmail项目,并且必须将未标记邮件的附件保存到Google Drive。该脚本每30分钟运行一次,有时一些附件在Google Drive文件夹中保存多次。
file.setName
是Google应用程序类文件()的脚本函数。此函数的参数是由函数
renameFile(附件,邮件体)
获取的字符串,该函数从电子邮件文本中提取一些字符串并将它们连接成单个字符串“有时某些附件在Google Drive文件夹中保存了多次”问题是什么?代码应该寻找重复,而不是两次处理?也许甚至删除复制品?只有在没有用户标签和保存附件的情况下,脚本才处理所有的Gmail邮件。我不明白为什么脚本再次标记邮件,因此再次保存附件。我们可以考虑。“复制控制”标签在处理后添加到mal中。可能是我把一些条件放错了位置。。。