解析电子邮件并附加谷歌表

时间:2015-09-28 08:03:05

标签: regex parsing google-apps-script google-sheets gmail

我正在尝试从g-mail中的邮件中定期提取发送给我的信息。我想从电子邮件中提取数据并将其添加到Google工作表中的电子表格中。

我对这种类型的编程完全没有经验,而且我一直在尝试使用反复试验来解决这个问题。到目前为止,我没有运气,而我所能得到的只是电子表格上写有空值。

我正在尝试使用正则表达式来解析我需要的数据,然后从那里我使用appendRow写入电子表格。

  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);
 }
 }
 };

我认为我的问题在于:

private void button1_Click(object sender, EventArgs e)
{
    string items = string.Empty;

    foreach (var item in checkedListBox1.CheckedItems)
    {
        if (items.Length == 0)
            items = item.ToString();
        else
            items = items + "," + item;               
    }

    //make myCommand object and open connection on your own
    myCommand = new SqlCommand(query, myConn); 

    string query = @'select distinct firstName, lastName, chineseName, teacherEmail, entryYear, leaveYear, userLoginId, ad.applicationId 
    from [teacher_detail] as td 
    LEFT JOIN[class_detail] as cd ON td.teacherId = cd.teacherId 
    LEFT JOIN[application_teacher] as at ON at.teacherId = td.teacherId 
    LEFT JOIN[application_detail] as ad ON at.applicationId = ad.applicationId 
    Where ad.applicationId = 2
    and chineseName in (@name)'

    myCommand.Parameters.Add("@name", SqlDbType.nvarchar);
    myCommand.Parameters["@name"].Value = items;

    //now execute query

}

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

除了你的正则表达式中的拼写错误(缺少第一个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()是多余的,因为正则表达式只会在匹配结束时捕获数字。