Parsing 如何解析Gmail消息以将数据提取到Google Sheets
我正在从事一个研发项目,在这个项目中,我使用Linux命令收集服务器端的统计数据,并将其输出到我的邮件中。现在,我的计划是阅读并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
解析包含我的服务器数据的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”)
当我尝试从触发器运行代码时。请告诉我如何更正此问题。