需求:修改代码仅将邮件中XML附件上传至Google Drive
仅上传XML附件到Google Drive的代码修改
只需在遍历附件的逻辑中添加过滤条件,只处理XML格式的附件即可,以下是修改后的完整代码:
var label = GmailApp.getUserLabelByName('NFs'); // <-- RENAME TO YOUR CUSTOM FILTER LABEL var moveToLabel = GmailApp.getUserLabelByName('NFs Import'); // <-- Uncomment to move to new label after download var ss = SpreadsheetApp.openById('19vKRsoFwVyXOxvWkE'); // <-- INSERT GSHEET_ID var sh = ss.getSheetByName("Email"); // <-- Enter Sheet-Name where records should be created var destinationFolderID = '1noxxKIgg4N3G0Ob'; // <-- Enter the ID of the folder to copy files to var threads = label.getThreads(); threads.forEach(thread => { var messages = thread.getMessages(); messages.forEach(message => { var sent = message.getDate(); var sender = message.getFrom(); var subject = message.getSubject(); var attachments = message.getAttachments({ includeInlineImages: false, includeInlineAttachments: false }); var attachmentNames = []; attachments.forEach(attachment => { // 仅处理XML格式的附件,兼容大小写后缀(如.XML或.xml) if (attachment.getName().toLowerCase().endsWith('.xml')) { Drive.Files.insert( { title: attachment.getName(), mimeType: attachment.getContentType(), parents: [{ id: destinationFolderID }] }, attachment.copyBlob() ); attachmentNames.push([attachment.getName()]); } }); // 补充:将XML附件记录写入表格(若原代码有此需求) if (attachmentNames.length > 0) { sh.appendRow([sent, sender, subject, JSON.stringify(attachmentNames)]); } }); // 可选:处理完成后移动邮件到指定标签 // thread.addLabel(moveToLabel); // thread.removeLabel(label); });
关键修改点
- 增加了文件名后缀判断逻辑
attachment.getName().toLowerCase().endsWith('.xml'),确保只筛选出XML格式的附件 - 仅当附件符合XML格式时,才执行上传到Google Drive和记录文件名的操作
内容的提问来源于stack exchange,提问作者Julio Sielski
相关产品推荐
相关产品推荐

