regex


Parsing email with Google Apps Script, regex issue?


I used to be quite proficient in VBA with excel, but I'm currently trying to do something with Google Scripts and I am well and truly stuck.
Basically, I am trying like to extract data out of a standardised email from Gmail into a Google sheet. There are a couple of other threads on the subject which I have consulted so far, and I can get the body of the email into the sheet but cannot parse it.
I am new to regex, but it tests OK on regex101
I am also brand new to Google Script, and even the debugger seems to have stopped working now (it did before, so would be grateful if anyone can suggest why this is).
Here is my basic function:
function processInboxToSheet() {
var label = GmailApp.getUserLabelByName("NEWNOPS");
var threads = label.getThreads();
// Set destination sheet
var sheet = SpreadsheetApp.getActiveSheet();
// Get all emails labelled NEWNOPS
for (var i = 0; i < threads.length; i++) {
var tmp,
message = threads[i].getMessages()[1], // second message in thread
content = message.getPlainBody(); // remove html markup
if (content) {
// search email for 'of:' and capure next line of text as address
// tests OK at regex101.com
property = content.match(/of:[\n]([^\r\n]*)[\r\n]/);
// if no match, display error
var property = (tmp && tmp[1]) ? tmp[1].trim() : 'No property';
sheet.appendRow([property]);
} // End if
// remove label to avoid duplication
threads[i].removeLabel(label)
} // End for loop
}
I can append 'content' to the sheet Ok, but cannot extract the address text required by the regex. Content displays as follows:
NOPS for the purchase of:
123 Any Street, Anytown, AN1 1AN
DATE: 05/05/2017
PRICE: £241,000
Seller’s Details
NAME: Mrs Seller
Thanks for reading :)
The return value of .match() is an array. The first captured group, containing the address, will be at index 1.
Based on the following line after your call to .match(), it looks like the tmp variable should have been assigned that array, not the property variable.
var property = (tmp && tmp[1]) ? tmp[1].trim() : 'No property';
That line says, if .match() returned something that isn't null and has a value at index 1, then trim that value and assign to property, otherwise assign it the string 'No property'.
So, try changing this line:
property = content.match(/of:[\n]([^\r\n]*)[\r\n]/);
To this:
tmp = content.match(/of:[\n]([^\r\n]*)[\r\n]/);

Related Links

How can i remove a line only if it is followed by a line that starts with the same character?
how to extract Regular expression extractor from jmeter response?
Regex used to interleave head and tail of a list
Powershell wildcard / regex replace
How to Split String Using Regex Expressions
regex to identify failures in log
Fail2ban filter for docker sshd container using syslog
Oracle11g Regex Non-capturing Groups
Parsing with regexp in Matlab when a variable has underscores
How to redirect static files requests to https in Nginx?
Visual Studio replace magic number integers with doubles
REGEX and replacing strings that has numeric as identity
Regex - Pull all strings, but with spaces if in between quotes (Preferably without quotes)
Javascript Regex exclude matches that contain keywords
regex to find first occurence
Searching and replacing a block of XML formatted text in Bash

Categories

HOME
redirect
dicom
openshift-origin
robotframework
apache-pig
haskell-stack
applet
localforage
antlr
httpbuilder-ng
windows-server-2012-r2
restsharp
struts2-jquery
calayer
hyperion
pymc3
command-line-arguments
openui5
editor
union
avr
condor
python-2.5
smartsheet-c#-sdk-v2
imp
graphcool
nsmutableattributedstring
curve-fitting
profiling
stylesheet
android-button
expression-trees
shinydashboard
android-imageview
html-select
ollydbg
spring-data-cassandra
qweb
microsoft-translator
bezier
uistoryboardsegue
dsx
ibm-wcm
message-hub
hawkular
qmake
formatdatetime
integer-programming
clientscript
uifont
glfw
reactivex
manual
webloadui
ipmi
turbo-c
evaluate
setwindowshookex
xceed
4d
qlpreviewcontroller
python-3.1
angularjs-filter
sliding
aplpy
radix-sort
uat
ubiquity
core-data-migration
avalonedit
sketching
odoo
words
spiceworks
typesafe-activator
citymaps
django-supervisor
pkcs#10
nitrogen
nine-patch
xml.modify
srp
jxta
ramdisk
dfsort
pdf-scraping
libavcodec
flash-cs4
pubdate
firebird2.1
hla
ccombobox
argumentexception
python-dateutil
uptime
godaddy-api
domain-mapping
headless-browser
ariatemplates
nextpeer
freeglut
c++builder-xe2
android-screen
b-method
emacs-ecb
network-scan
time-estimation
run-length-encoding
resharper-4.5
docking
reference-library

Resources

Mobile Apps Dev
Database Users
javascript
java
csharp
php
android
MS Developer
developer works
python
ios
c
html
jquery
RDBMS discuss
Cloud Virtualization
Database Dev&Adm
javascript
java
csharp
php
python
android
jquery
ruby
ios
html
Mobile App
Mobile App
Mobile App