【发布时间】:2015-12-25 09:59:30
【问题描述】:
我正在尝试从 g-mail 中的邮件中提取定期发送给我的信息。我想从电子邮件中提取数据并将其添加到 Google 表格中的电子表格中。
我对这种类型的编程完全没有经验,我一直在使用反复试验来尝试解决这个问题。到目前为止我没有运气,我能得到的只是让电子表格获得写在上面的空值。
我正在尝试使用正则表达式来解析我需要的数据,然后从那里我使用 appendRow 写入电子表格。
function processInboxToSheet() {
var start = 0;
var threads = GmailApp.getInboxThreads(start, 100);
var SPREADSHEET_URL = "https://docs.google.com/spreadsheets/d/18TzTzylbmu-g2lQyZo-YoscxW8SIK7a-tg/edit?usp=sharing";
var SHEET_NAME = 'Sheet1';
var result = [];
var spreadsheet = SpreadsheetApp.openByUrl(SPREADSHEET_URL);
var qs_sheet = spreadsheet.getSheetByName(SHEET_NAME);
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
var content = messages[0].getRawContent();
if (content) {
我想我的问题出在这里:
var tmp;
var stringToParse = "*Longitude* W119.37938";
tmp = stringToParse.match(/d{1,4}\.\d{5}/);
var username = (tmp && tmp[1]) ? tmp[1].trim() : 'No username';
qs_sheet.appendRow([username]);
Utilities.sleep(500);
}
}
};
感谢您的帮助!
【问题讨论】:
-
缺少反斜杠:
d{1,4}-->\d{1,4} -
您没有在您的正则表达式中指定任何捕获组,并且正在使用
tmp[1]。如果您需要119.37938值,只需使用tmp[0]。马里亚诺是对的,您需要使用\d来匹配数字。看看this demo。
标签: regex parsing google-apps-script google-sheets gmail