【问题标题】:parse email and append google sheets解析电子邮件并附加谷歌表格
【发布时间】: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


【解决方案1】:

除了您的正则表达式中的错字(第一个 d 缺少反斜杠)之外,问题是您没有在您的正则表达式中指定任何捕获组(圆括号组),并且正在尝试访问第一个非tmp[1] 的现有捕获组。

如果您需要获取119.37938 值,只需使用tmp[0]

var stringToParse = "*Longitude* W119.37938";
tmp = stringToParse.match(/\d{1,4}\.\d{5}/);
var username = (tmp && tmp[0]) ? tmp[0] : 'No username';
document.write(username);

请注意,.trim() 是多余的,因为您的正则表达式仅在匹配结束时捕获数字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 2021-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多