需要从电子邮件复制数据并粘贴到Google电子表格中

时间:2019-09-23 06:42:23

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

在该应答代码中写入了两个函数,一个是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

1 个答案:

答案 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