regex Google Apps插件-从Gmail中提取数据到电子表格中

pinkon5k  于 12个月前  发布在  Go
关注(0)|答案(2)|浏览(94)

这是我第一个尝试从头开始写的剧本。到现在为止还不太好所以我打算寻求一些帮助。
案例:我收到电子商务确认电子邮件从电子商务网站没有回复电子邮件地址。在电子邮件的身体,他们发送电子邮件地址从买家。我想发送一个自动邮件到身体的电子邮件地址。
我计划如何做到这一点(任何预防措施,以消除步骤将感谢)。
1.使用规则为传入电子邮件添加唯一标记。
1.使用该标签来识别Gmail中的电子邮件与脚本,去一个接一个,并提取我需要的信息.使用正则表达式与电子邮件正文内容提取电子邮件地址我需要发送自动电子邮件.计划是得到:主题,日期,电子邮件从正文.
1.将所有信息写入电子表格。
1.摆脱独特的标签信息,以防止重复运行。
1.然后使用表单骡子插件发送电子邮件从电子表格。
到目前为止,我已经处理了步骤1(简单),并一直在努力与步骤2和3(我不是一个编码器,我可以阅读,unstrand和hack。从头开始写作是一个完全不同的事情)。
与脚本我提取信息到电子表格,与插件我使用的信息从电子表格发送电子邮件。
这是我写的代码到目前为止。我已经离开了regex部分以后,因为我甚至不能写任何东西到电子表格。一旦我得到的工作,我开始在regex和“删除标签”方面的脚本工作。

function myFunction() {
  function getemails() {
    var label = GmailApp.getUserLabelByName("Main tag/subtag");
    var threads = label.getThreads();
    for (var i = 0; i < threads.length; i++) { 
    var messages=threads[i].getMessages();  
      for (var j = 0; j < messages.length; j++) {
    var message=messages[j];
    var subject=message.getSubject();
    tosp(message);
      }
     }
  }

  function tosp(message){
    var body=message.getBody()
    var date=message.getDate();
    var subject=message.getSubject(); 
    var id= "my spreasheet id";
    var ss = SpreadsheetApp.openById(id);
    var sheet = ss.getActiveSheet();
    sheet.appendRow(subject,date,body);    

}
}

字符串
如果你能帮忙的话,我将不胜感激。
谢谢塞巴斯蒂安

tvz2xvvm

tvz2xvvm1#

下面是我编写和测试的代码,它可以很好地执行您提到的步骤2,3和4。

function myFunction() {

  var ss = SpreadsheetApp.getActiveSheet();

  var label = GmailApp.getUserLabelByName("MyLabel");
  var threads = label.getThreads();

  for (var i=0; i<threads.length; i++)
  {
    var messages = threads[i].getMessages();

    for (var j=0; j<messages.length; j++)
    {
      var msg = messages[j].getBody();
      var sub = messages[j].getSubject();
      var dat = messages[j].getDate();

      ss.appendRow([msg, sub, dat])
    }
      threads[i].removeLabel(label);
  }
}

字符串
代码中的一个错误是appendRow函数接受[ ]括号内指定的元素数组。
根据您附加此脚本的位置,您的代码行:

var ss = SpreadsheetApp.openById(id);


如果脚本是在要记录这些电子邮件的电子表格的脚本编辑器中编写的,则不需要。但是,如果该电子表格中有多个表格,则可以替换我的行

var ss = SpreadsheetApp.getActiveSheet();


通过

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Sheet1");


另一个建议是,当前代码将以HTML格式给你给予消息。因此,如果你想得到你所看到的纯文本消息,用途:

var msg = messages[i].getPlainBody();


现在你可以为正则表达式编写另一个函数,并将消息msg传递给它。希望这能有所帮助!

polkgigr

polkgigr2#

我做了一个现成的脚本,解释如何使用它(从一开始),以及为那些谁需要更多的帮助。
它在gmail-to-google-sheets-script存储库中。只需阅读内容并按照说明操作。

如何使用

  • 创建新的Google表单
  • 访问菜单工具>脚本编辑器
  • 将内容从gmailt-to-sheets.gs复制到editor,替换其中的示例代码
  • SEARCH_QUERY上的值替换为您的真实的查询(首先在gmail上进行搜索,将搜索项复制并粘贴到那里)
  • 在菜单上选择saveEmails(靠近“运行”和“调试”按钮)
  • 点击“运行”按钮
  • 它将在第一次运行时要求授权,继续接受它(这是您的Gmail帐户授权您的Google Script帐户)
  • 运行后,结果将应用于您的工作表

更改字段

如果你想保存不同的消息属性,看看gmail-message class,用铅笔修改你的脚本文件下面的代码。️

相关问题