我正在尝试使用使用正则表达式的脚本来解析从 G 邮件消息中提取的数据。使脚本的其余主要功能正常运行,但存在一个相当大的问题。
脚本仅从每个线程的第一条消息返回数据。我希望它从每个线程中的每条消息返回数据,我一直在玩它但到目前为止没有运气。
如有任何帮助,我们将不胜感激。
谢谢!
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);
}
};
最佳答案
难道你不能也只循环遍历消息吗?
for (var i = 0; i < threads.length; i++) {
var messages = threads[i];
for(var j = 0; j < messages; j++) {
var content = messages[j].getRawContent();
}
}
关于multithreading - gmail 脚本仅从每个线程的第一封电子邮件中提取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33067693/