- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎02-10-2014 10:25 AM
I am trying to import Word Documents to ServiceNow Knowledge Articles with out losing any images. I have tried using the Word Cleaner and SED installs without any success. Is there any fix that works?
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-09-2014 07:52 AM
IMPORTANT UPDATE - 03/03/2016:
I updated the entire script as I ran into some errors. And now it can also be used with journal fields!
See my reply: Re: Import of Word Documents to ServiceNow Knowledge base
You can also read more about it here: Create Knowledge Base Article (HTML field) or Comments (Journal field) from Email
you corrected the thrown exception errors on 4 of the lines in the script.
example on your line 18 with the part:
while(match == regex.exec(searchBody)){
the actual script is
while(match = regex.exec(searchBody)){
I know it throws an errors, but that's somehow required for the script to work. Because later you're going to use the value in the variable 'match' that has been set in line 18... If somebody has any idea how to formulate this correctly, you're welcome to help out.
Here is the full script that I use:
var gdt = new GlideDate();
gdt.addDays(2);
//current.valid_to = gdt;
var desc = email.subject;
desc = desc.replace("Knowledge:","");
current.short_description = desc.trim();
current.workflow_state = "draft";
current.topic = "General";
//current.category = "";
current.roles = "knowledge";
//Find and replace the image tags with the proper source.
//Get the number of attachments so the loop can be exited
//so it will stop no mater what.
var currentCount = 0;
var newBody = email.body_html;
var searchBody = email.body_html.replace(/\n/g, " ");
var regex = /<img(.*?)>/ig;
var match;
var match2;
while(match = regex.exec(searchBody)){
//Add a style float tag next to the align tag.
var alignText = match[0].replace(/align=['"]?left['"]?/gi, 'align="left" style="FLOAT: left"');
alignText = alignText.replace(/align=['"]?right['"]?/gi, 'align="right" style="FLOAT: right"');
searchBody = searchBody.replace(match[0], alignText);
var regex2 = /src=("(.)*?"|'(.)*?'|(.)*?\s+$)?/ig;
while(match2 = regex2.exec(alignText)){
findAndReplaceImage(match2[1].replace(/\s+$/,"").replace(/"+/g,"").replace(/'+/g,""));
}
currentCount += 1;
if(currentCount >= 100)
break;
}
searchBody = searchBody.replace(/<o:p>(.*?)<\/o:p>/ig, "");
currentCount = 0;
var regex2 = /<!--\[if(.*?)<!\[endif\]-->/ig;
while(match = regex2.exec(searchBody)){
searchBody = searchBody.replace(match[0], "");
currentCount += 1;
if(currentCount >= 100)
break;
}
currentCount = 0;
var regex2 = /<!\[if !vml\]>(.*?)<!\[endif\]>/ig;
while(match = regex2.exec(searchBody)){
searchBody = searchBody.replace(match[0], match[1]);
currentCount += 1;
if(currentCount >= 100)
break;
}
//gs.log("Create Morning Post: " + searchBody);
current.text = searchBody;
current.insert();
event.state="stop_processing";
function getEmailSYSID(emailuid) {
var em = new GlideRecord('sys_email');
em.addQuery('uid', emailuid);
em.query();
while(em.next()) {
//we execute the return only within a certain time difference between the creation of the attachment and now (in seconds)
var dif = gs.dateDiff(em.sys_created_on, gs.nowNoTZ(), true);
//gs.log("difference: " + dif + "eid: " + em.sys_id + " uid: " + em.uid); //debug
if(dif < 300 && dif > -300){
//gs.log('passed dif if: ' + em.sys_id + " uid: " + em.uid); //debug
return em.sys_id;
}
}
return "";
}
function findAndReplaceImage(imageText){
var img = imageText;
var imgName = img.substring(4, img.search(/@/i));
var imgCode = "sys_attachment.do?sys_id=";
//Get the sys_id of the attachment
var gr = new GlideRecord("sys_attachment");
gr.addQuery("file_name", imgName);
gr.addQuery("table_sys_id", getEmailSYSID(email.uid));
gr.query();
if (gr.next()) {
imgCode += gr.sys_id;
}
searchBody = searchBody.replace(img, imgCode);
}

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎12-11-2014 01:21 AM
HI together
I'm facing a similar issue:
On the prod Instance on Dublin Release the obove code works great.
On the dev Instance Eureka Patch 7 the obove code doesn't generate the pictures as attachment and displayes it wrong:
Did you find a solution for this?
On Dublin we faced the same problem than Angus. I (as an admin) can copy & paste pictures and the itil users with knowledge_admin and image_admin role can't.
Thanks

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎12-11-2014 11:55 AM
From your screen shot it does not look like the images are attached to the KB article. Are you sure the images showed up at the instance as part of the message?

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎12-11-2014 01:59 PM
Hi Drew
no they aren't. In Dublin they get attached. I think I know the root cause. There are two users for my email adress in the system. My admin user and my itil user have the same email adress. So it's more or less coincidence which user is chosen when I send an email to the system. The itil user didn't posess the knowledge role. I this caused it.
I have to think about the problem of the duplicate users.
Thank you for your question. It broght me the solution.
BR
Christina
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎11-03-2015 08:59 AM
I tried to use this code--the latest one, and it didn't work. I made an inbound email action and made the target table knowledge. I copied everything that was in this thread. I sent an email to my dev with the contents of a word doc with pictures copied into it and made a legitimate subject line. It goes to my inbox but doesn't automatically process. Isn't it suppose to automatically process it self and make a kb article? Even after I choose process, it goes into the 'received' folder but still does not make a published or unpublished article. Where did I go wrong?

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎11-03-2015 09:02 AM
What version of ServiceNow? Is the inbound action set for new messages? What does the log say about the processing of it?