Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Email 获取gmail电子邮件内容并传送到谷歌电子表格,并进行相应安排_Email_Google Apps Script - Fatal编程技术网

Email 获取gmail电子邮件内容并传送到谷歌电子表格,并进行相应安排

Email 获取gmail电子邮件内容并传送到谷歌电子表格,并进行相应安排,email,google-apps-script,Email,Google Apps Script,您好,我只是想知道我是否可以提取标签上某封电子邮件的所有电子邮件内容,并将其放入谷歌电子表格中。打开每封电子邮件并将每一个数据复制粘贴到电子表格中以进行相应安排是非常累的。我试着在vb中创建一个宏来安排电子邮件,但我仍然需要打开每封电子邮件来获取数据并将它们放在我的excel文件中 以下是我想根据其标签排列的电子邮件内容示例,每封电子邮件将按行和列显示: 共型:仅IV型 类型自动:手动 日期:2016年11月21日下午1:49:11 车型:三菱 公司地址:匹克 价格:8000.00 CA:迈克尔

您好,我只是想知道我是否可以提取标签上某封电子邮件的所有电子邮件内容,并将其放入谷歌电子表格中。打开每封电子邮件并将每一个数据复制粘贴到电子表格中以进行相应安排是非常累的。我试着在vb中创建一个宏来安排电子邮件,但我仍然需要打开每封电子邮件来获取数据并将它们放在我的excel文件中

以下是我想根据其标签排列的电子邮件内容示例,每封电子邮件将按行和列显示:

共型:仅IV型

类型自动:手动 日期:2016年11月21日下午1:49:11 车型:三菱
公司地址:匹克 价格: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获取完整代码:


谢谢你的回复,但我需要的是在电子表格上排列数据,因为我仍然需要编辑这些内容的一些信息。哦,我看到了,但似乎我在getdate()上遇到了问题。谷歌脚本工作得很好,谢谢!不得不将线程[t].getdate()更改为线程[t].getLastMessageDate()。要深入了解消息详细信息,请使用GmailApp.getMessagesForThread(线程[t])看看你有没有视频教程?这样我就可以很容易地了解gmail脚本。因为我现在不熟悉gmail脚本。我需要尽可能快地完成这个过程,这样我就不需要手动复制和粘贴电子邮件了。谢谢alot@kkk它是带有附加函数的基本JavaScriptRiPt你几乎知道了基本的气体。只有局限性和额外的特征要考虑。你最好的朋友是谷歌自己的文档。这不是Gmail脚本,它是谷歌脚本,意思是它涵盖了所有东西,从Gmail,到文档,电子表格,日历等,如果它在G-Su套(现在称之为)。你可能可以编写脚本。它很容易导航,所以从你想使用的东西开始,寻找你需要的对象。