【发布时间】:2016-01-09 03:20:42
【问题描述】:
我正在尝试使用使用正则表达式的脚本从 g-mail 消息中解析提取数据。让脚本的其余主要功能正常工作,但是有一个非常大的问题。
脚本仅从每个线程的第一条消息返回数据。我希望它从每个线程中的每条消息中返回数据,我一直在玩它,但到目前为止还没有运气。
任何帮助将不胜感激。
谢谢!
function processInboxToSheet() {
var start = 0;
var threads = GmailApp.getInboxThreads(start, 100);
var SPREADSHEET_URL = "https://docs.google.com/spreadsheets/d/1QDg";
var SHEET_NAME = 'Sheet1';
var result = [];
var spreadsheet = SpreadsheetApp.openByUrl(SPREADSHEET_URL);
var 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;
tmp = content.match(/\<\!\-\-\soutRadius\s\s\[*(.+?)\]/);
var radius = (tmp && tmp[1]) ? tmp[1].trim() : 'Unknown Radius';
tmp = content.match(/\<\!\-\-\sX\s\s\[*(.+?)\]/);
var longitude = (tmp && tmp[1]) ? tmp[1].trim() : 'Unknown Latitude';
tmp = content.match(/\<\!\-\-\sY\s\s\[*(.+?)\]/);
var latitude = (tmp && tmp[1]) ? tmp[1].trim() : 'Unknown Longitude';
tmp = content.match(/\The mobile number was located on\s*(.+?)\s/);
var date = (tmp && tmp[1]) ? tmp[1] : 'Unknown date';
tmp = content.match(/([\d:]*)\s*GMT/);
var time = (tmp && tmp[1]) ? tmp[1] : 'Unknown time';
sheet.appendRow([date, time, longitude, latitude, radius]);
Utilities.sleep(500);
}
};
【问题讨论】:
-
我想通了...我有脚本的组件,但我猜它没有正确组合在一起。感谢您的帮助,因为您可能会说我在编写脚本方面的经验非常少。再次感谢
标签: multithreading google-sheets gmail-api