在该应答代码中写入了两个函数,一个是main,另一个是提取详细信息,因此它带有两个函数,每当运行脚本时,其getError()之类的抛出错误都未定义,所以我只是将一个函数作为main ,现在数据将自动跟踪到工作表中,但其只读的第一个线程是未读标签。如果标签具有23个线程,则第一个线程仅重复23次。甚至我已经更改了threads.messages(0),它仅跟踪已读取线程的第一个线程,而不跟踪未读取线程。你能帮我吗
function main(){
var query = {'q':'label:"Sanmina EDI Failed Concurrent Jobs Alert" is:UNREAD'};
var threads = Gmail.Users.Messages.list(userId='me', q=query);
for(i in threads.messages){
var threadIds = threads.messages[0].threadId;
var message = GmailApp.getMessageById(threadIds);
extractDetails(message);
GmailApp.markMessageRead(message);
}
function extractDetails(message)
{
var dateTime = message.getDate();
var bodyContents = message.getBody();
var action= bodyContents.search("Invoice")
var action1=bodyContents.search("Error")
var action2=bodyContents.search("Terminated")
if(action > 0)
{
var out="Need to create SR"
}
else if(action1>0 || action2>0)
{
var out="Need to create SR"
}
else
{
var out="Printing output file"
}
var activeSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
activeSheet.autoResizeRows(1, 2);
activeSheet.appendRow([dateTime, bodyContents, out]);
}
}
[在此处输入图片描述] [1]
Sanmina EDI并行作业失败警报-标签的主题同名
生产工作流邮件程序 2017年5月26日,晚上7:30
请求ID程序名称状态请求者 ---------- ---------------------------------------- -------------------- -------- 813511350 Sanmina EDI 850/860入站PO /更改表格报告警告NERODRIG
答案 0 :(得分:0)
尝试使用Gmail API搜索线程:
function main(){
var query = {'q':'label:"Sanmina EDI Failed Concurrent Jobs Alert" is:UNREAD'};
var threads = Gmail.Users.Messages.list(userId='me', q=query);
for(i in threads.messages){
var threadIds = threads.messages[i].threadId;
var message = GmailApp.getMessageById(threadIds);
extractDetails(message);
GmailApp.markMessageRead(message);
}
}
function extractDetails(message){
var dateTime = message.getDate();
var bodyContents = message.getPlainBody();
var action= bodyContents.search("Invoice")
var action1=bodyContents.search("Error")
var action2=bodyContents.search("Terminated")
if(action > 0)
{
var out="Need to create SR"
}
else if(action1>0 || action2 > 2)
{
var out="Need to create SR"
}
else
{
var out="Printing output file"
}
var activeSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
activeSheet.appendRow([dateTime, bodyContents, out]);
}
如果只需要最后一条消息,请使用threads.messages[0]
而不是i
。
更多信息: List method