How to user JavaScript String search() Method

Radhika11
Tera Contributor

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

2 ACCEPTED SOLUTIONS

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.

View solution in original post

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.

View solution in original post

32 REPLIES 32

matthew_magee1
Giga Guru

This could be tough. What happens if there is another John Lopez or Susan Smith, etc?

Hello @matthew_magee1 

 

You are absolutely correct regarding users with the same name.   

The current process is HR personnel who handles New Hires.  She sent an email to SN. SN creates the Service Request and automatic populate the "Request for" field with the sender name, which is always going to be her name and body of the email goes to the RITM Description field. 

 

Instead of we manually change the "Request For", we would like her to enter the New Hire Name in the body of the email.  We then search for the text that contains for example "New Hire Name:  John, Lopez" and populate it in the Request For field.

 

Any suggestions.

 

Thank you

 

Still sounds risky in the event there are employees w/ the same spelling name.

Is there an employee ID that HR can plug into the email, which would coincide w/ a value on in the user table?

Can you point HR to a portal page (record producer) that they could fill out and choose a specific user, which would then in turn, create the Service Request?

Basheer
Mega Sage

Hi @matthew_magee1 ,

You need to write a before+on insert business rule to achieve it

 

var description = current.description;

if(.description.include("From:")){

var firstLine = description.split('\n')[0];

var split=  firstLine.split(":");

var userName = spllit[1];

var userRecord = new GlideRecord("sys_user");

userRecord.addQuery("name",userName);

userRecord.query();

if(userRecord.next()){

current.requested_for = userRecord.getUniqueValue();

}

 

 

 

}

 

Please hit like button if my suggestion has helped you in any way.
Please mark correct if my response has solved your query.

Cheers,
Mohammed Basheer Ahmed.