google-apps-script - Gmail 应用脚本 - 从 Gmail 标签而不是 Gmail 收件箱中提取电子邮件内容
问题描述
我有一个在线表单,可以将提交的表单字段数据发送到 Gmail。我一直在使用下面的脚本将表单字段数据提取到 Google 表格中。目前,脚本从收件箱中提取。我想知道是否有办法调整脚本,使其查看 Gmail 标签(例如:formsubmissions)而不是收件箱。
function parseEmailMessages(start) {
start = start || 0;
var threads = GmailApp.getInboxThreads(start, 100);
var sheet = SpreadsheetApp.getActiveSheet();
for (var i = 0; i < threads.length; i++) {
// Get the first email message of a threads
var tmp,
message = threads[i].getMessages()[0],
subject = message.getSubject(),
content = message.getPlainBody();
// Get the plain text body of the email message
// You may also use getRawContent() for parsing HTML
// Implement Parsing rules using regular expressions
if (content) {
tmp = content.match(/First:\s*([A-Za-z0-9!"?`?|õüö’çëÅíšÃÉÁÇÃáéñãóú#&;()-,'@./\s\-]+)(\r?\n)/);
var first = (tmp && tmp[1]) ? tmp[1].trim() : 'BLANK';
tmp = content.match(/Last:\s*([A-Za-z0-9!"?`?|õüö’çëÅíšÃÉÁÇÃáéñãóú#&;()-,'@./\s\-]+)(\r?\n)/);
var last = (tmp && tmp[1]) ? tmp[1].trim() : 'BLANK';
tmp = content.match(/Title:\s*([A-Za-z0-9!"?`?|õüö’çëÅíšÃÉÁÇÃáéñãóú#&;()-,'@./\s\-]+)(\r?\n)/);
var title = (tmp && tmp[1]) ? tmp[1].trim() : 'BLANK';
tmp = content.match(/Organization:\s*([A-Za-z0-9!"?`?|õüö’çëÅíšÃÉÁÇÃáéñãóú#&;()-,'@./\s\-]+)(\r?\n)/);
var organization = (tmp && tmp[1]) ? tmp[1].trim() : 'BLANK';
tmp = content.match(/City:\s*([A-Za-z0-9!"?`?|õüö’çëÅíšÃÉÁÇÃáéñãóú#&;()-,'@./\s\-]+)(\r?\n)/);
var city = (tmp && tmp[1]) ? tmp[1].trim() : 'BLANK';
tmp = content.match(/State:\s*([A-Za-z0-9!"?`?|õüö’çëÅíšÃÉÁÇÃáéñãóú#&;()-,'@./\s\-]+)(\r?\n)/);
var state = (tmp && tmp[1]) ? tmp[1].trim() : 'BLANK';
tmp = content.match(/Country:\s*([A-Za-z0-9!"?`?|õüö’çëÅíšÃÉÁÇÃáéñãóú#&;()-,'@./\s\-]+)(\r?\n)/);
var country = (tmp && tmp[1]) ? tmp[1].trim() : 'BLANK';
tmp = content.match(/E-mail:\s*([A-Za-z0-9!"?`?|õüö’çëÅíšÃÉÁÇÃáéñãóú#&;()-,'@_.\-]+)/);
var email = (tmp && tmp[1]) ? tmp[1].trim() : 'BLANK';
tmp = content.match(/BLANK:\s*([\s\S]+)/);
var blank = (tmp && tmp[1]) ? tmp[1] : 'BLANK';
sheet.appendRow([first, last, title, organization, city, state, country, email]);
} // End if
} // End for loop
}
解决方案
- 您想
threads
从formsubmissions
标签名称中检索标签。
如果我的理解是正确的,那么这个修改呢?我认为您的情况有几个答案。所以请认为这只是其中之一。
修改后的脚本:
请进行如下修改。
从:var threads = GmailApp.getInboxThreads(start, 100);
至:
var labelName = "formsubmissions"; // Please set the label name
var labels = GmailApp.getUserLabels();
var threads = [];
for (var i = 0; i < labels.length; i++) {
if (labels[i].getName() == labelName) {
threads = labels[i].getThreads();
break;
}
}
笔记:
- 修改后的脚本假设下面的脚本
var sheet = SpreadsheetApp.getActiveSheet();
工作正常。
参考:
如果我误解了你的问题,我很抱歉。
推荐阅读
- stripe-payments - 使用 Stripe,暂停付款并在订阅开始时确认
- oop - 带有子程序的多态赋值可能导致 Fortran 中的数据损坏
- c# - MVC5 升级后客户 Html 助手的空引用异常
- apache - 如果请求标头格式错误,则不处理 Apache 虚拟主机
- javascript - 使用 map() 函数列出来自 firestore 的数据。它只显示一个帖子而不是所有帖子
- asp.net-core - PhysicalFileProvider 应该如何在 asp.net 控制器中工作
- angular - 从服务器获取 Nebular 主题或其中的一部分
- email - Golang SMTP 错误:535 5.7.0 无效的登录名或密码
- javascript - html表单提交的问题
- sql - 将多个完全外连接查询合并到一个查询中,并对多个表进行 ON 检查