- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-25-2017 04:37 AM
Hi All,
I have an inbound request action, and what I am trying to do is get the the inbound action to check the inbound email for an Email Address within the body of the email itself. Then use this email address to set it as the 'Requested for" of the Request.
Now excuse me as I am completely new to development and Javascript so I'm probably a mile off but this is what I have so far, I'm not sure how I go about using the variable 'emails' to essentially check the user table and set this as the requester
createRequest();
function createRequest() {
//Create Request
var grRequest = new GlideRecord ("sc_request");
grRequest.initialize();
var content = email.body_text;
var emails = content.match(/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}/ig);
gs.log('Email is ' + emails); NOTE: This prints the email address from the body of the email fine
var userObject = gs.getUser().getRecord().getValue('emails');
grRequest.requested_for.setDisplayValue(emails);
grRequest.short_description = email.subject.toString();
grRequest.description = "received from: " + email.origemail + "\n\n" + email.body_text;
var requestSysId = grRequest.insert();
//Create Request Item, substitute your requested for
//current.requested_for = '52aa1965db4ef2006de0f3731d9619e1';
current.requested_for.setDisplayValue('emails');
current.short_description = email.subject.toString();
current.description = "received from: " + email.origemail + "\n\n" + email.body_text;
//substitute your cat item
current.cat_item = '73a67d42db248300aefef3731d961917';
current.parent = requestSysId;
current.request = requestSysId;
current.insert();
//Workflow Trigger
var w = new Workflow();
wfSysId = w.getWorkflowFromName("Test");
w.startFlow(wfSysId, current, current.operation());
}
Any points or help would be much appreciated.
Solved! Go to Solution.
- Labels:
-
Integrations
-
Scripting and Coding
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-25-2017 09:22 AM
it would be best to call a function doing the job.
Something like:
grRequest.requested_for = getRequestedForID(emails);
and create the new function after or inside your "createRequest" function:
function getRequestedForID(retrievedEmail){
var grUser = new GlideRecord("sys_user");
grUser.addQuery("email", retrievedEmail);
grUser.query();
if(grUser.next()){
return grUser.sys_id.toString();
}
else {
gs.log("Couldn't find user based on email: " + retrievedEmail + " in Inbound Email Action Create Request","Inbound Email log");
}
}

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-25-2017 04:40 AM
Hello Nabeel,
In the inbound action mark requested for as Email >Sender.
Please try and let me know if you need any other information related to this.
ServiceNow Commnunity MVP -2018 class.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-25-2017 04:42 AM
Hi Karthik,
The send of the email is a generic email unfortunately, the user's email address is only within the body of the email itself
Thanks,
Nabeel

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-25-2017 04:47 AM
You can write script as below.
Current.requested_for = email.body.email.
As the user today give email in the below format.
Email: user mail I'd.
ServiceNow Commnunity MVP -2018 class.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-25-2017 04:51 AM
Unfortunately no because I don't have any control over the inbound email and can't amend it, it only has the email address at the bottom there isn't any words or anything before it.
Any other ideas?
Thanks