首页 文章

如何解析Gmail邮件以将数据提取到Google表格

提问于
浏览
0

我正在研究一个研发项目,我使用Linux命令收集我的服务器端统计信息并将其输出到我的邮件中 . 现在我的计划是阅读 Gmail Gmail 内容,其中包含我的服务器数据(如下所示)并将其解压缩到 Google Sheets . 我的Gmail内容如下所示,其中包含行和列中的数据 .

Date&Time JVM PID CPU MEM FGC
03-09-2017-09-08-PM abc01_xzy01 12345 1.2% 2.75 3
03-09-2017-09-08-PM abc01_xzy01 12345 3.5% 2.71 4
03-09-2017-09-08-PM abc01_xzy01 12345 4.6% 2.79 5

我的想法是以完全相同的方式拉入 Google Sheet . 我'm using the below code but it'无法阅读内容 . 我_1116321_与RegExp有关 . 能告诉我代码必须在 if 语句中写得多么准确 .

function parseEmailMessages(start) {

  start = start || 0;

  var threads = GmailApp.getInboxThreads(start, 100);
  var sheet = SpreadsheetApp.getActiveSheet();

  for (var i = 0; i < threads.length; i++) {

    var tmp,
      message = threads[i].getMessages()[0],
     // subject = message.getSubject(),
     subject = "SERVER TEST REPORT",
      content = message.getPlainBody();

    if (content) {

      tmp = content.match(/Date&Time:\s*([A-Za-z0-9\s]+)(\r?\n)/);
      var username = (tmp && tmp[1]) ? tmp[1].trim() : 'No Date & Time';

      tmp = content.match(/JVM:\s*([A-Za-z0-9\s]+)(\r?\n)/);
      var username = (tmp && tmp[1]) ? tmp[1].trim() : 'No JVM';

      sheet.appendRow([username, email, subject, comment]);

    } 

  } 
}

我的输出只在Google表格中打印 No Date & TimeNo JVM . 我想在邮件中给出的列和行中打印名称和数据 . 有人可以帮我解决这个问题并告诉我错误是什么以及如何像预期的那样提取数据 . 提前致谢 .

1 回答

  • 1

    如果您的电子邮件中的所有内容都是您在上面发布的内容,则会将其放入您的电子表格中 . 更改电子邮件主题和工作表名称以满足您的需要 .

    function getGmail() {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = ss.getActiveSheet();
      var threads = GmailApp.search('IMPORTANT1', 0, 10);
    
      for (var i = 0; i < threads.length; i++) {
        var messages = GmailApp.getMessagesForThread(threads[i]);
      for (var j = 0; j < messages.length; j++) {
        var msg=messages[j].getPlainBody();
        var msg=msg.trim()
      }
    }
     result1(msg)
      }
    function result1(range) {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheet1 = ss.getSheetByName("Sheet1")
      var lr=sheet1.getLastRow()
      var output=[]
      var line=range.split("\n")
      for(j=0;j<line.length;j++){
         output.push(line[j].split(" "))
      }
      sheet1.getRange(lr+1, 1, output.length, output[0].length).setValues(output)
     }
    

相关问题