Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Parsing 如何解析Gmail消息以将数据提取到Google Sheets_Parsing_Google Apps Script_Google Sheets_Gmail - Fatal编程技术网

Parsing 如何解析Gmail消息以将数据提取到Google Sheets

Parsing 如何解析Gmail消息以将数据提取到Google Sheets,parsing,google-apps-script,google-sheets,gmail,Parsing,Google Apps Script,Google Sheets,Gmail,我正在从事一个研发项目,在这个项目中,我使用Linux命令收集服务器端的统计数据,并将其输出到我的邮件中。现在,我的计划是阅读并解析包含我的服务器数据的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_xzy0

我正在从事一个研发项目,在这个项目中,我使用Linux命令收集服务器端的统计数据,并将其输出到我的邮件中。现在,我的计划是阅读并
解析
包含我的服务器数据的
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
我的想法是以完全相同的方式进入
谷歌表单
。我正在使用下面的代码,但它无法读取内容。我在想它是否与使用的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]);

    } 

  } 
}
函数解析电子邮件(开始){
开始=开始| | 0;
var threads=GmailApp.getInboxThreads(开始,100);
var sheet=SpreadsheetApp.getActiveSheet();
对于(var i=0;i

我的输出只是在Google表单中打印
无日期和时间
无JVM
。我想打印邮件中给出的列和行中的名称和数据。请有人帮我一下,告诉我错误是什么,以及如何像预期的那样提取数据。提前感谢。

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

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)
 }
函数getGmail(){ var ss=SpreadsheetApp.getActiveSpreadsheet(); var sheet=ss.getActiveSheet(); var threads=GmailApp.search('IMPORTANT1',0,10); 对于(var i=0;i对于(j=0;j感谢您的建议。我有几个问题。请您澄清一下。我可以在哪里提到主题名称,以便它可以直接查找相应的主题并提取邮件内容。此外,在执行代码后,我观察到所有数据都粘贴在一行中,而不是在之后进入新行第一行结束。请你帮我附上一个共享的电子表格,你可以复制并尝试。它有一个带有说明的笔记表。当你复制它时,你将成为它的所有者,它将获得你的Gmail。至于单行。脚本在行的末尾寻找/n新行,以知道在哪里拆分它们。你的电子邮件不能包含在新行字符中。最简单的方法是将它们添加到您的Linux提要中。要进行测试,您可以向自己发送一封电子邮件,在每行之后按enter键复制一行。谢谢Ed。这很有帮助。Ed,我在这里遇到了一个问题,请您帮我解决这个问题。我收到错误
无法将[object object]转换为(类)。(第6行,文件“Code”)当我尝试从触发器运行代码时。请告诉我如何更正此问题。