Help with JSON - populating values on a newly created record from catalog variables

Lon Landry4
Mega Sage

Hi Community,

While using workflow, I need to populate values in a newly created record using catalog variables.

Currently, this script results in items being two items created (but not the three expected) with correct state,
but asset_tag & serial_number are empty.

 

There does not seem to be any related error messages. 

Any ideas?

 

var grHardware = new GlideRecord('alm_hardware');

var map = {

"asset_tag":"first_asset_tag",

"serial_number": "first_serial_number",

"asset_tag":"second_asset_tag",

"serial_number": "second_serial_number",

"asset_tag":"third_asset_tag",

"serial_number": "third_serial_number",

};

gs.info(map);

for(var item in map){

                grHardware.setValue(item,current.variables[map[item]]);

                grHardware.initialize();                         

                grHardware.asset_tag = current.variables.field;

                grHardware serial_number = current.variables.field;

                grHardware.install_status = '6';

                grHardware.insert();

1 ACCEPTED SOLUTION

-O-
Kilo Patron
Kilo Patron

Each

 

grHardware.initialize();

 

call clears every value that has been set up to that point for grHardware.

So in effect all that is ever set remains

 

grHardware.asset_tag = current.variables.field;
grHardware serial_number = current.variables.field;
grHardware.install_status = '6';
grHardware.insert();

 

 

Perhaps what you mean is this:

 

var maps = [
	{
		'asset_tag': 'first_asset_tag',
		'serial_number': 'first_serial_number',
	},
	{
		'asset_tag': 'second_asset_tag',
		'serial_number': 'second_serial_number',
	},
	{
		'asset_tag': 'third_asset_tag',
		'serial_number': 'third_serial_number',
	},
];

gs.info(JSON.stringify(maps, null, '\t'));

var grHardware = new GlideRecord('alm_hardware');

for (var i = 0; i < maps.length; i++) {
	var map = maps[i];

	gs.debug('Setting up record ' + (i + 1));
	grHardware.initialize();

	for (var field in map) {
		gs.debug('Setting field ' + field + ' to value of variable ' + map[field] + ' (' + current.variables[map[field]] + ')');
		grHardware.setValue(field, current.variables[map[field]]);
	}

	grHardware.install_status = '6';

	gs.debug('Creating record ' + (i + 1));
	grHardware.insert();
}

 

?

 

Assuming that there are 6 variables named first_asset_tag, first_serial_number, second_asset_tag, second_serial_number, third_asset_tag and third_serial_number.

View solution in original post

3 REPLIES 3

-O-
Kilo Patron
Kilo Patron

Each

 

grHardware.initialize();

 

call clears every value that has been set up to that point for grHardware.

So in effect all that is ever set remains

 

grHardware.asset_tag = current.variables.field;
grHardware serial_number = current.variables.field;
grHardware.install_status = '6';
grHardware.insert();

 

 

Perhaps what you mean is this:

 

var maps = [
	{
		'asset_tag': 'first_asset_tag',
		'serial_number': 'first_serial_number',
	},
	{
		'asset_tag': 'second_asset_tag',
		'serial_number': 'second_serial_number',
	},
	{
		'asset_tag': 'third_asset_tag',
		'serial_number': 'third_serial_number',
	},
];

gs.info(JSON.stringify(maps, null, '\t'));

var grHardware = new GlideRecord('alm_hardware');

for (var i = 0; i < maps.length; i++) {
	var map = maps[i];

	gs.debug('Setting up record ' + (i + 1));
	grHardware.initialize();

	for (var field in map) {
		gs.debug('Setting field ' + field + ' to value of variable ' + map[field] + ' (' + current.variables[map[field]] + ')');
		grHardware.setValue(field, current.variables[map[field]]);
	}

	grHardware.install_status = '6';

	gs.debug('Creating record ' + (i + 1));
	grHardware.insert();
}

 

?

 

Assuming that there are 6 variables named first_asset_tag, first_serial_number, second_asset_tag, second_serial_number, third_asset_tag and third_serial_number.

Lon Landry4
Mega Sage

Thanks for the guidance. I had my wires crossed in regards to JSON notation. Now, this all makes sense, thanks again.

You're most welcome 🙂