[英]How to pull specific columns from Gmail CSV attachment to Google Spreadsheet using app script?
[英]Google app Script delete specific attachment from gmail
我对谷歌应用脚本有点陌生,并尝试弄清楚如何使用谷歌应用脚本解决我的谷歌邮件问题
更新:只有特定的附件需要移除 rest 的结构和附件需要相同。 提供的解决方案删除所有附件!
问题:
我每天都从我的供应商和客户那里收到带有 pdf 附件的 email,有些是使用自动系统发送给我的,有些是通过手动发送给我的,其中一些 email 的附件名为“无名”或读取。 我正在使用自动应用程序下载此 pdf 附件,当有 email 完全忽略的“无名”附件时,我每天都会错过一些 pdf
计划解决方案:
使用谷歌应用程序脚本,我尝试捕获“无名”附件并仅删除email 内容的文件 rest 和 pdf 需要相同。
我已经设法实现代码来捕获特定的 email 发送无名附件,如果他们未读然后检查附件并删除无名
我需要建议的地方:如何删除选定的附件?
function myFunction() {
Logger.log("unread emails: " +
GmailApp.search('is:unread from:pdf_sender@gmail.com'));
var deta = GmailApp.search('is:unread from:1031mymailx@gmail.com')
var msgs = GmailApp.getMessagesForThreads(deta);
for (var i = 0 ; i < msgs.length; i++) {
Logger.log("msg object lenth " + msgs.length)
for (var j = 0; j < msgs.length; j++) {
Logger.log("msg i object lenth " + msgs[i].length)
var attachments = msgs[i][j].getAttachments();
var m_id = msgs[i][j].getId()
for (var k = 0; k < attachments.length; k++) {
Logger.log("attachment lenth " + attachments.length)
Logger.log('Message "%s" contains the attachment "%s" (%s bytes)', msgs[i][j].getSubject(), attachments[k].getName(), attachments[k].getSize());
if (attachments[k].getName() == "noname" ){
// attachments[k].deleteAttachment();
Logger.log('Message "%s" contains the attachment "%s" (%s bytes)', msgs[i]
[j].getSubject(), attachments[k].getName(),attachments[k].getSize());
}
}
}
}
}
GMail 消息是不可变的 - 也就是说,您无法修改它们。 但是,您可以通过下载内容、修改内容并将修改后的消息重新插入您的帐户来重新创建它们。
我已经修改了您的代码,以便它使用解释的方法完成您的要求。 它遍历搜索结果并检查消息是否包含名为noname
的文件名。 如果是这样,它会插入不包含noname
附件的原始消息的修改。
此外,您可以选择取消注释两条不同的行,以便:
INBOX
UNREAD
(以便它显示在您的收件箱中)和未读标签插入。var BOUNDARY_REGEX = new RegExp('boundary=\"(.+)\"');
function removeAttachment(msg) {
var emailContent = msg.getRawContent();
if (emailContent.indexOf('filename=noname') == -1) return;
var boundary = BOUNDARY_REGEX.exec(emailContent)[1];
var boundaryLine = '--' + boundary;
var sections = emailContent.split(boundaryLine);
var filteredSections = sections.filter(function(value, index, arr) {
return value.indexOf('filename=noname') == -1;
});
var resultBody = filteredSections.join(boundaryLine);
var encodedResultBody = Utilities.base64EncodeWebSafe(resultBody);
var resource = {'raw': encodedResultBody};
// OPTIONAL - LABEL YOUR NEWLY CREATED MAIL AS 'INBOX' & 'UNREAD'
// resource['labelIds'] = ['INBOX', 'UNREAD'];
var response = Gmail.Users.Messages.insert(resource, 'me', null, {'internalDateSource': 'dateHeader'});
Logger.log("Inserted email id is: %s", response.id);
// OPTIONAL - TRASH ORIGINAL MESSAGE
// GmailApp.moveMessageToTrash(msg);
return response.id;
}
function myFunction() {
Logger.log("unread emails: " +
GmailApp.search('is:unread from:pdf_sender@gmail.com'));
var deta = GmailApp.search('is:unread from:1031mymailx@gmail.com')
var msgs = GmailApp.getMessagesForThreads(deta);
for (var i = 0 ; i < msgs.length; i++) {
for (var j = 0; j < msgs[i].length; j++) {
Logger.log("msg object length " + msgs[j].length);
removeAttachment(msgs[i][j]);
}
}
}
在执行此代码之前,请确保您已启用GMail 高级服务。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.