Email 获取gmail电子邮件内容并传送到谷歌电子表格,并进行相应安排
您好,我只是想知道我是否可以提取标签上某封电子邮件的所有电子邮件内容,并将其放入谷歌电子表格中。打开每封电子邮件并将每一个数据复制粘贴到电子表格中以进行相应安排是非常累的。我试着在vb中创建一个宏来安排电子邮件,但我仍然需要打开每封电子邮件来获取数据并将它们放在我的excel文件中 以下是我想根据其标签排列的电子邮件内容示例,每封电子邮件将按行和列显示: 共型:仅IV型 类型自动:手动 日期:2016年11月21日下午1:49:11 车型:三菱Email 获取gmail电子邮件内容并传送到谷歌电子表格,并进行相应安排,email,google-apps-script,Email,Google Apps Script,您好,我只是想知道我是否可以提取标签上某封电子邮件的所有电子邮件内容,并将其放入谷歌电子表格中。打开每封电子邮件并将每一个数据复制粘贴到电子表格中以进行相应安排是非常累的。我试着在vb中创建一个宏来安排电子邮件,但我仍然需要打开每封电子邮件来获取数据并将它们放在我的excel文件中 以下是我想根据其标签排列的电子邮件内容示例,每封电子邮件将按行和列显示: 共型:仅IV型 类型自动:手动 日期:2016年11月21日下午1:49:11 车型:三菱 公司地址:匹克 价格:8000.00 CA:迈克尔
公司地址:匹克 价格:8000.00 CA:迈克尔,约翰 单程票 地址:加拿大圣方济各沃3号楼 LM:牡蛎
SOI:工厂工人 位置:大副 地址:加利福尼亚州圣地亚哥3号机组 我想要的是根据我创建的标题来排列它们:在每个邮件开始之前,直到冒号(:)标记。我已经通过搜索word的开头直到冒号以及在excel上使用剪切和粘贴完成了这项工作,但由于手动打开和粘贴文件中的电子邮件,仍然需要花费大量时间。这方面有什么办法吗 您可以使用将电子邮件元数据保存到Google工作表中。它还将消息保存到驱动器。(免责声明:我是附加组件的作者) 这可以通过附加在谷歌工作表上的谷歌脚本来完成,类似于下面的代码片段
function getGmailData() {
var sheet = SpreadsheetApp.getActiveSheet();
var threads = GmailApp.search("is:unread in:inbox", 0, 20);
for (var t=0; t<threads.length; t++) {
sheet.appendRow([threads[t].getDate(), threads[t].getId(), threads[t].getFirstMessageSubject()])
}
}
函数getGmailData(){
var sheet=SpreadsheetApp.getActiveSheet();
var threads=GmailApp.search(“is:unreadin:inbox”,0,20);
对于(var t=0;t是的,您可以这样做。事实上,我有一个谷歌脚本,可以做到这一点。我的脚本有一个web UI,您可以在其中设置日期前后字段和文件名字段。启动脚本后,它会收到所有电子邮件(不是线程,Gmail服务与线程一起工作,如果你想搜索单个消息,你需要使用Gmail API),然后你可以将任何关于它的信息输出到谷歌电子表格 我建议不要使用VB,而是使用GAS。您可以使用
GmailApp.getUserLabelByName(“MyLabel”)
获取要从中提取消息的标签,然后使用.getThreads()
从标签中获取所有线程(对话)
阅读你可以用线程做什么,以及你可以用消息做什么
queriedMessages =
Gmail.Users.Messages.list(userInfo.mail, {
'q': queryString,
'pageToken': execProperties.nextPageId
});
然后我可以从个人信息中提取我想要的信息。查询字符串基本上就是你在Gmail中搜索电子邮件的内容,所以你可以使用类似于
标签的东西:“这个标签”
响应有点晚,但希望我的回答能帮助其他人。我的插件刚刚发布,它完全实现了上述功能:
- 反复浏览昨天的电子邮件
- 解析来自它们的数据
- 每天使用解析数据向电子表格添加新行
//Variables of your choice here
var sheet = '';
var query = '';
var array2d = getEmailsInbox(array2d, query);
//Proccess all emails that match query and add them into 2-dimensional array
function getEmailsInbox(array2d, query){
var emails = [];
var thds = GmailApp.search(query);
for(var i in thds){
var msgs = thds[i].getMessages();
for(var j in msgs){
var dt = msgs[j].getDate();
var mail = msgs[j].getReplyTo();
var subj = msgs[j].getSubject();
var body = msgs[j].getPlainBody();
emails.push([dt, mail, subj, body]);
}
}
return emails;
}
//Function to add objects from 2 dimensional array to a spreadsheet as rows
function appendInboxEmails(sheet, array2d){
sheet.getRange(sheet.getLastRow() + 1, 1, array2d.length, array2d[0].length).setValues(array2d);
}
//Put that function on trigger or run once
function run() {
if(typeof array2d !== 'undefined' && array2d.length > 0) {
appendInboxEmails(sheet, array2d);
array2d = [];
}
}
我在谷歌应用程序脚本上编写了你想要的代码,我制作了一个YouTube视频详细解释了这一点。你可以从以下链接观看: 但是,如果您想从电子邮件正文中提取特定文本,则需要正则表达式。我的视频系列的第2部分介绍了如何实现此目的。您可以在此处观看: 您还可以通过以下链接从GitHub获取完整代码: