Need help with my onAfter transform script. It is not showing the image properly on the image prompt/field. Please help.

John Clyde Ap_a
Giga Expert

I am trying to dynamically add attachments to every imported record and want to automatically attach it to the image prompt, I tried a script but I cannot seem to make the image display properly work..

 

I have tried this script:

find_real_file.png

 

This is what it shows up:

find_real_file.png

Its not an image as there is no preview for it. I'm not sure why it is not showing the image.

find_real_file.png

I wanted to display the images just like the other image(note that I manually added the image, but I wanted to dynamically add it base on my script) in the pic below but its not showing it properly.

find_real_file.png

 

 

For reference this is my imported excel table.

find_real_file.png

Here is my mapped fields:

find_real_file.png

 

Can anyone please help? It's been a few days and I am still unfortunately stuck.

 

 

1 ACCEPTED SOLUTION

Hi,

This worked for me

Remove line 10 i.e. don't copy

Add these lines as you are removing line 10

Give correct name of image field from target table.

I assume you are loading images only into the target table from import set.

var attachmentRecord = new GlideRecord("sys_attachment");
attachmentRecord.orderByDesc("sys_created_on");
attachmentRecord.addQuery("table_name", target.sys_class_name);
attachmentRecord.addQuery("table_sys_id", target.sys_id);
attachmentRecord.addQuery("file_name", fileName);
attachmentRecord.query();
if(attachmentRecord.next()){

	var sysId = new global.VariableUtil().copyAttachment(attachmentRecord.getUniqueValue(), "ZZ_YY" + target.sys_class_name, target.sys_id);
	target.u_imageFieldName = sysId; // give your field name which holds image
	target.update();

}

Regards
Ankur

Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader

View solution in original post

24 REPLIES 24

Hello Ankur,

I really apologize for the inconvenience. Here is the updated script for confirmation. Unfortunately it still won't work.

find_real_file.png

 

find_real_file.png

Hi,

This worked for me

Remove line 10 i.e. don't copy

Add these lines as you are removing line 10

Give correct name of image field from target table.

I assume you are loading images only into the target table from import set.

var attachmentRecord = new GlideRecord("sys_attachment");
attachmentRecord.orderByDesc("sys_created_on");
attachmentRecord.addQuery("table_name", target.sys_class_name);
attachmentRecord.addQuery("table_sys_id", target.sys_id);
attachmentRecord.addQuery("file_name", fileName);
attachmentRecord.query();
if(attachmentRecord.next()){

	var sysId = new global.VariableUtil().copyAttachment(attachmentRecord.getUniqueValue(), "ZZ_YY" + target.sys_class_name, target.sys_id);
	target.u_imageFieldName = sysId; // give your field name which holds image
	target.update();

}

Regards
Ankur

Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader

Hello Ankur,

Yes, I am loading images based from an import set.

find_real_file.png

I really apologize for taking up your time, but unfortunately it is still not working in my side. 

find_real_file.png

 

For references I'll show my configs:

This is the target table.

find_real_file.png

 

This is the image field:

find_real_file.png

 

This is the config for the transform map

find_real_file.png

 

and finally the updated script as you have instructed me to do.

find_real_file.png

 

and I'm not sure if this is helpful since the process happens in the script but this is my mapped fields.

find_real_file.png

 

I have also rechecked the sys_attachment table and I confirmed the images are in there.

find_real_file.png

Hi,

update as this

var sa = new GlideSysAttachment();
var attachmentSysId = sa.write(target, fileName, fileContentType, fileData);

var sysId = new global.VariableUtil().copyAttachment(sysId, "ZZ_YY" + target.sys_class_name, target.sys_id);
target.image = attachmentSysId; // give your field name which holds image
target.update();

Regards
Ankur

Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader

Hello Ankur,

 

I have tried it and this is the updated script. There is progress but it is showing this .

find_real_file.png

find_real_file.png

 

Opening the record only shows it like this.

find_real_file.png