Google App Script to sync gmail inbox with sheets
我有一个脚本从 gmail 帐户中提取数据。该脚本扫描收件箱中的邮件并找到相关的文本行并将其放入 Google 表格中。
电子邮件看起来像:
车辆:5761364,位置:(Google 地图的网址)
我用来获取数据到工作表的脚本是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 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]+)(\ ?\ )/); 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 工作表与收件箱中的电子邮件一起自动更新。现在它每次运行时都会重复。
另外,如果电子邮件被删除,是否可以让脚本删除创建的行。所以工作表列表总是与收件箱同步?
如果没有意义,请问我。
为了解决重复邮件的问题,您需要检查邮件是否未读。如果它未读,则阅读它并在之后将其设为已读。我在 YouTube 上制作了视频系列来解释这是如何实现的,并在 github 上发布了完整的代码。你可以在这里观看:
https://youtu.be/nI1OH3pAz6s?t=9
您也可以通过以下链接从 GitHub 获取完整代码:
-
GitHub:将 Gmail 电子邮件导入 Google 表格
-
GitHub:从 Gmail 电子邮件中提取正文内容
您可以从基于时间的触发器运行您的脚本,如果您每次都重写整个工作表,那么这将负责消除已删除电子邮件中的条目。如果您可以将收到的日期添加到电子表格中,那么您可以按日期排序。