- 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 08:19 AM
Thanks Jaspal here is the exact email
From: smoothwall@example.com
Sent: 25 August 2017 15:53
To: 'ServiceNow' <*****@service-now.com>
Subject: Unblock request for https://example.com
Please unblock https://example.com
Guardian user is AD\USERNAME
[The following information is not authenticated by Guardian] Additional information:Please can you make this available for me
Request from John Doe john.doe@example.com
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-25-2017 08:58 AM
Hello Arshad,
Can you try to replace this part of the script:
var userObject = gs.getUser().getRecord().getValue('emails');
grRequest.requested_for.setDisplayValue(emails);
with:
var userObject = gs.getUser().getRecord().getValue('emails');
grRequest.requested_for = userObject;
I think you have to assign a sys_id on a reference field.
Can you confirm that "userObject " variable contain the wanted sys_id ?
If not, you'll have to do a glide record on sys_user to retrieve the sys_id based on the email.
regards
R
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-25-2017 09:07 AM
Thanks renaud, I think we're getting close..
"userObject" doesn't contain the sys_id unfortunately however, what is the best way/script I should use to get this based on the email?
Cheers,
Nabeel
- 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-28-2017 04:40 AM
Renaud thank you so much, I've now got this working perfectly
Much appreciated for your help!
Regards,
Nabeel