- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-19-2023 09:21 AM
Hello,
We are receiving service request submitted from using emails. The RITM description field captures the entire email.
I would like to search the name "From: John,Lopez" in the RITM description field and populate in "Requested For" field.
See attached
Could someone please help? Thank you
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-20-2023 06:31 PM
You are using an after business rule to update current. That beaks rule no. 1 of Business rules: whenever the current record is to be updated, it must be done using a before business rule.
Rule no. 2 being: whenever a different record than the current one needs to be updated, it must be done using an after business rule.
The other issue is the RegExp itself; it should be:
/^From:\s*(.+)$/mi
Another issue is that you are using the name directly to set the field. You need to fetch the user's sys_id and use that to set the value of the field:
GetIDValue('sys_user', )
Something like:
// Script to extract sender name from RITM description and set as requested for
// Get RITM description
var description = '' + current.description;
// Use regular expression to extract name from "From" field
var senderName = description.match(/^From:\s*(.+)$/mi);
// Set extracted name as requested for
current.requested_for = GetIDValue('sys_user', senderName[1]);
Of course the code should check that the value returned by GetIDValue is not null and only set the requested for if it is not. This is also a very fragile solution as the slightest mistype, even an additional or missing space in the name and it will not work.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-13-2023 10:50 PM
Hello,
Something simple like
var senderName = description.match(/^To:.+<mailto:([^<>]+)/mi);
should do it, but if you want a solution where you match either the original patter or this one, a different RegExp is needed.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-25-2023 09:17 PM - edited 01-25-2023 10:16 PM
You're welcome 🙂
Function match of a String means look for the patter in the string and return each find. The pattern, also called Regular Expression mean look for a sub-string that matches the rules:
- a line starting with text: From:
- followed by any number of white spaces: \s*
- followed by at least one of any kind of character: .+
- followed by any number of white spaces: \s*
- followed by a less-than character: <
- turn on capturing: (
- followed by at least one character that is neither less-than nor greater than: [^<>]+
- turn off capturing: )
- followed by a greater-than character: >
- followed by the end of a line
Capturing means that function match, in addition to returning the whole matched result, shall also return separately whatever fall between capturing delimiters. In our case the e-mail is captured.
To be honest, this could be simplified to:
/^From:.+<([^<>]+)>$/mi
Because we are no longer interested in anything (e.g. name) but the e-mail at the end.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-26-2023 08:50 AM
Many thanks to you again @-O-
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-26-2023 09:27 AM
You're welcome! 🙂