这是我尝试从头开始编写的第一个脚本。到现在为止一直不好,所以我会去寻求帮助。
案例:我收到来自电子商务网站的电子商务确认电子邮件,没有回复电子邮件地址。在电子邮件的正文中,他们会从买家发送电子邮件地址。我想将自动邮件发送到正文的电子邮件地址。
我打算如何做到这一点(将会感谢任何消除步骤的建议。)
使用规则标记带有唯一标记的传入电子邮件。
使用该标签通过脚本识别gmail中的电子邮件,逐个进行并提取我需要的信息。将正则表达式与电子邮件正文内容一起使用,以提取我需要发送自动电子邮件的电子邮件地址。计划是获取:主题,日期,来自正文的电子邮件。
将所有信息写入电子表格。
删除唯一标记信息以防止重复运行。
然后使用表单mule addon从电子表格发送电子邮件。
到目前为止,我已经处理了第1步(简单),并且一直在处理第2步和第3步(我不是编码器,我可以阅读,不支持和黑客攻击。从头开始编写是完全不同的事情) 。在我认为这是处理它的最佳方式之前,我已经处理了4。
使用脚本我将信息提取到电子表格,使用插件我使用电子表格中的信息发送电子邮件。
这是我到目前为止编写的代码。我之后离开了正则表达式部分,因为我甚至无法在电子表格中写任何内容。一旦我开始工作,就会开始在正则表达式中工作,然后删除标签"脚本的各个方面。
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);
}
}
任何帮助将不胜感激。
由于 塞巴斯蒂安
答案 0 :(得分:21)
以下是我编写和测试的代码,它完美地执行了您提到的第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
传递给它。希望这有帮助!
答案 1 :(得分:1)
@pointNclick回答您的问题。但是我准备了一个易于使用的脚本,并从一开始就说明了如何使用该脚本,对此谁需要更多帮助。
它在gmail-to-google-sheets-script存储库中。只需阅读内容并按照说明进行操作即可。
SEARCH_QUERY
上的值替换为实际查询(首先在gmail上进行搜索,然后将搜索词复制并粘贴到此处)saveEmails
(在“运行”和“调试”按钮附近)如果要保存其他消息属性,请查看gmail-message class,并在注释Sheet header columns
和Values to get and store
下面的代码处更改脚本文件。