用于将gmail收件箱与工作表同步的Google App脚本

时间:2017-10-06 08:33:28

标签: google-apps-script google-sheets synchronization gmail

我有一个脚本从gmail帐户中提取数据。该脚本扫描收件箱中的邮件并查找相关的文本行并将其放入Google表格中。

电子邮件类似于:

车辆:5761364,位置:(谷歌地图的URL)

我用来获取数据的脚本是:

function processInboxToSheet() {
  var start = 0;
  var threads = GmailApp.getInboxThreads(start, 100);
  var sheet = SpreadsheetApp.getActiveSheet();
  var result = [];

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

    var content = messages[0].getPlainBody();

    if (content) {
      var tmp;
      tmp = content.match(/Vehicle:\s*([A-Za-z0-9\s]+)(\r?\n)/);
      var username = (tmp && tmp[1]) ? tmp[1].trim() : 'No vehicle';

      tmp = content.match(/Map Link:\s*([A-Za-z ][A-Za-z0-9!@#$%?=^.,:&*/ ]+)/);
      var comment = (tmp && tmp[1]) ? tmp[1] : 'No url';

      sheet.appendRow([username, comment]);

      Utilities.sleep(500);
    }
  }
};

是否可以制作一种同步功能,其中Google表格会自动更新收件箱中的电子邮件。现在它每次运行都会重复。

此外,有人可以告诉我是否有可能让脚本删除在删除电子邮件时创建的行。因此,工作表列表始终与收件箱同步吗?

请问我是否有意义。

2 个答案:

答案 0 :(得分:0)

您可以从timebased trigger运行您的脚本,如果您每次只重写整个工作表,那么这将消除已删除电子邮件中的条目。如果您可以将收到的日期添加到电子表格中,那么您可以按日期订购它们。

答案 1 :(得分:0)

要解决电子邮件重复的问题,您需要检查邮件是否未读。如果未读,请先将其读取,然后再读取。我在YouTube上制作了一系列视频,解释了这是如何实现的,并将完整代码发布在github上。您可以在这里观看:

https://youtu.be/nI1OH3pAz6s?t=9

您还可以从以下链接从GitHub获取完整代码: