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 to escape special regular expression characters in oracle?
I need a regular expression to handle multiple date formats [closed]
RexEx for first half of Email match
Why does Perl backtracking match failure seem to take less time than match success?
Pass variable to AWK command
How can I skip over symbols in elisp?
Regex : remove first 0 if second digit of the string is not a 0
How to print all uppercase words in a region with sed and friends?
kornshell — using sed for replacement
Bash cp command and quotes
Regex to remove/replace characters before and after string in Notepad++
Get information from file and put in list
regex string that would validate specific alphanumeric format
Pattern matching variable ($1) after doing regex giving incorrect value
Powershell Search a pattern string in two lines together
perl - using HTML to extract data

Categories

HOME
odoo-10
actions-on-google
oozie
gwt
azure-search
tcl
afp
intel-xdk
payment-processing
build.gradle
apple-mail
wget
threadpool
editor
raspberry-pi2
flow
garmin
jruby
realm-java
missingmethodexception
urlrewriter.net
polynomials
azure-redis-cache
text-parsing
android-security
android-arrayadapter
buffer-overflow
codeceptjs
kprobe
python-behave
jsplumb
mobile-center
charts.js
haxm
querydsl
packaging
tibco-ems
protobuf-3
eve
csr
compass-lucene
essbase
logicblox
nscalendar
invalidate
openwebanalytics
reactivex
biological-neural-network
android-touch-event
replicate
shift-reduce-conflict
itamae
evaluate
ultratree
turnjs
statistics-bootstrap
hyperterm
duration
webpack-hmr
jongo
asp.net-webpages
pakyow
subroutine
parsoid
armv7
julian
base-conversion
zim-database
min3d
scribe
kue
jasmin
sbrk
ratingbar
concurrentdictionary
publish-actions
datacontractserializer
image-scaling
twill
data-quality
nine-patch
hebrew
srp
windows-phone-7.1
modx-evolution
mod-python
bochs
xhtml-transitional
tempo
word-2010
onmouseout
ekeventkit
ccr
self-organizing-maps
settings.bundle
blackberry-jde
pastebin
wmd
non-relational-database
help-authoring

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