使用 Apps 脚本将 Gmail 附件复制到 Google 驱动器
Copying Gmail attachments to Google Drive using Apps Script
我正在使用 Google Apps 脚本自动将电子邮件中的附件保存到唯一的 Google 驱动器文件夹,具体取决于邮件被过滤到的标签。
到目前为止,我已经成功地使用我在网上找到的一些代码片段获取了消息 ID。但是,我无法尝试访问邮件正文并将附件保存到驱动器文件夹。
function getMessage(){
var folder = DriveApp.getFolderById('xxxxxxxxxxxxx');
var userId = "myemail@gmail.com";
var query = "label:Global Alcohol";
var res = Gmail.Users.Messages.list(userId, {q: query});
var attachment = msgs.Attachments.get(userId, messageId, id);
var ids = res.messages.map(function(e){return e.id});
Logger.log(ids);// Message IDs with the specific labels.
}
在此先感谢您的帮助。
试试这个:
function saveAttachmentInFolder(){
var folder = DriveApp.getFolderById('xxxxxxxxxxxxx');
var userId = "myemail@gmail.com";
var query = "label:Global Alcohol";
var res = Gmail.Users.Messages.list(userId, {q: query});//I assumed that this works
res.messages.forEach(function(m){
var attA=GmailApp.getMessageById(m.id).getAttachments();
attA.forEach(function(a){
var ts=Utilities.formatDate(new Date(),Session.getScriptTimeZone(), "yyMMddHHmmss");
folder.createFile(a.copyBlob()).setName(a.getName()+ts);
});
});
}
var query = 'label:global-alcohol';
var folder = 'Global Alcohol';
var results = Gmail.Users.Messages.list(userId, {q: query});
results.messages.forEach(function (m) {
var msg = GmailApp.getMessageById(m.id);
msg.getAttachments().forEach(function (a) {
var fileName = a.getName();
fileName = saveAttachmentToFolder(folder, a, fileName, msg.getDate(), input.tz);
});
});
function saveAttachmentToFolder(folder, attachment, fileName, date, timezone) {
if (timezone) {
fileName = standardizeName(attachment, date, timezone);
}
Logger.log(fileName);
folder.createFile(attachment.copyBlob()).setName(fileName);
return fileName;
}
上面的代码片段基于我创建的 Gmail 插件,专门用于将附件保存到云端硬盘中带标签的文件夹:https://github.com/ellaqezi/archiveByLabel/blob/main/Code.gs#L24
在 label
字段中,您可以定义要在云端硬盘中创建的嵌套目录,例如foo/bar.
在 query
字段中,您可以复制参数,就像在 Gmail 的搜索栏中使用它们一样。
我正在使用 Google Apps 脚本自动将电子邮件中的附件保存到唯一的 Google 驱动器文件夹,具体取决于邮件被过滤到的标签。
到目前为止,我已经成功地使用我在网上找到的一些代码片段获取了消息 ID。但是,我无法尝试访问邮件正文并将附件保存到驱动器文件夹。
function getMessage(){
var folder = DriveApp.getFolderById('xxxxxxxxxxxxx');
var userId = "myemail@gmail.com";
var query = "label:Global Alcohol";
var res = Gmail.Users.Messages.list(userId, {q: query});
var attachment = msgs.Attachments.get(userId, messageId, id);
var ids = res.messages.map(function(e){return e.id});
Logger.log(ids);// Message IDs with the specific labels.
}
在此先感谢您的帮助。
试试这个:
function saveAttachmentInFolder(){
var folder = DriveApp.getFolderById('xxxxxxxxxxxxx');
var userId = "myemail@gmail.com";
var query = "label:Global Alcohol";
var res = Gmail.Users.Messages.list(userId, {q: query});//I assumed that this works
res.messages.forEach(function(m){
var attA=GmailApp.getMessageById(m.id).getAttachments();
attA.forEach(function(a){
var ts=Utilities.formatDate(new Date(),Session.getScriptTimeZone(), "yyMMddHHmmss");
folder.createFile(a.copyBlob()).setName(a.getName()+ts);
});
});
}
var query = 'label:global-alcohol';
var folder = 'Global Alcohol';
var results = Gmail.Users.Messages.list(userId, {q: query});
results.messages.forEach(function (m) {
var msg = GmailApp.getMessageById(m.id);
msg.getAttachments().forEach(function (a) {
var fileName = a.getName();
fileName = saveAttachmentToFolder(folder, a, fileName, msg.getDate(), input.tz);
});
});
function saveAttachmentToFolder(folder, attachment, fileName, date, timezone) {
if (timezone) {
fileName = standardizeName(attachment, date, timezone);
}
Logger.log(fileName);
folder.createFile(attachment.copyBlob()).setName(fileName);
return fileName;
}
上面的代码片段基于我创建的 Gmail 插件,专门用于将附件保存到云端硬盘中带标签的文件夹:https://github.com/ellaqezi/archiveByLabel/blob/main/Code.gs#L24
在 label
字段中,您可以定义要在云端硬盘中创建的嵌套目录,例如foo/bar.
在 query
字段中,您可以复制参数,就像在 Gmail 的搜索栏中使用它们一样。