求助:Google Apps Script中createTxtFiles函数无法正常运行
Google Apps Script 邮件转TXT附件发送问题修复
核心问题定位
主函数processEmails中调用了未定义的createTxtFiles函数,而实际实现该功能的函数名为createTxtFilesAndSendEmail,这是导致该模块无法工作的直接原因。
修正后的完整脚本
// 创建"Processed"标签(不存在则新建) function createLabel() { var label = GmailApp.getUserLabelByName('Processed'); if (!label) { GmailApp.createLabel('Processed'); } } // 将目标邮件转为TXT附件并发送到指定邮箱 function createTxtFilesAndSendEmail() { var processedLabel = GmailApp.getUserLabelByName('Processed'); if (!processedLabel) { processedLabel = GmailApp.createLabel('Processed'); } var sentLabel = GmailApp.getUserLabelByName('SENT'); var threads = GmailApp.search('label:inbox label:to_process'); var recipient = 'abhotline@gmail.com'; for (var i = 0; i < threads.length; i++) { var messages = threads[i].getMessages(); for (var j = 0; j < messages.length; j++) { var message = messages[j]; // 优化标签判断逻辑:检查邮件是否包含SENT标签 var hasSentLabel = message.getLabels().some(label => label.getName() === 'SENT'); if (!message.isInTrash() && !message.isStarred() && !message.isUnread() && !message.isDraft() && !message.isImportant() && !hasSentLabel) { var fileName = message.getSubject() + '.txt'; var content = message.getPlainBody(); var attachment = Utilities.newBlob(content, 'text/plain', fileName); var emailSubject = 'Forwarded message: ' + message.getSubject(); var emailBody = 'Please see attached file for message content.'; try { MailApp.sendEmail(recipient, emailSubject, emailBody, {attachments: [attachment]}); threads[i].addLabel(processedLabel); } catch (error) { Logger.log('Error sending email: ' + error); } } } } } // 移除已处理邮件的"to_process"标签 function removeLabel() { var toProcessLabel = GmailApp.getUserLabelByName('to_process'); if (!toProcessLabel) return; // 避免标签不存在时报错 var threads = toProcessLabel.getThreads(); for (var i = 0; i < threads.length; i++) { threads[i].removeLabel(toProcessLabel); } } // 主函数:按顺序执行处理流程 function processEmails() { createLabel(); createTxtFilesAndSendEmail(); // 修正函数调用名称 removeLabel(); }
额外优化说明
- 修正了原代码中HTML转义的符号(
<→<、&&→&&),确保脚本可直接运行 - 优化了SENT标签的判断逻辑:原代码用
includes直接比较Label对象可能失效,改用some方法匹配标签名称 - 在
removeLabel函数中增加了标签存在性判断,避免标签不存在时抛出异常 - 简化了
createTxtFilesAndSendEmail中的标签创建逻辑,直接用createLabel的返回值
内容的提问来源于stack exchange,提问作者friendly
相关产品推荐
相关产品推荐

