Remove User Criteria from Canread on Knowledge block

Michael51
Tera Guru

hello All,

we need to Remove an XYZ criteria from knowledge block in Bulk , if we have 4 to 5 criteria's to single block we need to Just remove XYZ alone and we need to keep other Criterias as it is 

 I have used this logic but it is removing all criteria's 

 

var gr = new GlideRecord('kb_knowledge_block');
gr.addEncodedQuery('kb_knowledge_base=ab0372fb1b668914619fed79b04bcba6^can_read_user_criteriaLIKE070120ae1b35695072e6eb99bd4bcb2a');
gr.query();

while (gr.next()) {
    gs.info(gr.getRowCount());
    gr.setValue('can_read_user_criteria','')
    gr.update();
}

 

@Ankur Bawiskar @Sandeep Rajput @jaheerhattiwale @Pavankumar_1 

 

can you please correct the script just remove only xyz from block 

TIA

1 ACCEPTED SOLUTION

@Michael51 

update as this

var gr = new GlideRecord('kb_knowledge_block');
gr.addEncodedQuery('kb_knowledge_base=ab0372fb1b668914619fed79b04bcba6^can_read_user_criteriaLIKE070120ae1b35695072e6eb99bd4bcb2a');
gr.query();

while (gr.next()) {
	var arr = gr.can_read_user_criteria.toString().split(',');
	var  index = arr.indexOf('070120ae1b35695072e6eb99bd4bcb2a');
	if (index > -1) { // only splice array when item is found
		arr.splice(index, 1); // 2nd parameter means remove one item only
	}

	gr.setValue('can_read_user_criteria', arr.toString());
	gr.update();
}

If my response helped please mark it correct and close the thread so that it benefits future readers.

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

View solution in original post

16 REPLIES 16

@Danish Bhairag2 ,

Thank you but criteria might not be always at index(1) , it can be at diff index's as well , can you correct me if am wrong

Hi @Michael51 ,

 

That 1 indicates how many values u want to remove. Hence 1.

You can check below link for reference :

https://www.w3schools.com/jsref/jsref_splice.asp

DanishBhairag2_0-1699875070702.png

 

Thanks,

Danish

 

 

Hello @Danish Bhairag2  ,

this is not working , it is not removing the criteria

Hi @Michael51 ,

 

Possible to share your script?

 

Thanks,

Danish

 

Hi @Michael51 ,

 

Can u just try checking for 1 record ?

you can apply logs n verify wht values it is returning?

u can try it in background script

 

 

var commaValues = [];

var gr = new GlideRecord('kb_knowledge_block');
gr.addEncodedQuery('kb_knowledge_base=ab0372fb1b668914619fed79b04bcba6^can_read_user_criteriaLIKE070120ae1b35695072e6eb99bd4bcb2a');
gr.query();

while (gr.next()) {
    var val = gr.can_read_user_criteria.toString();
    commaValues = val.split(',');
    var index = commaValues.indexOf('070120ae1b35695072e6eb99bd4bcb2a');
    var x = commaValues.splice(index, 1);
gs.info("Final Value:- "+ commaValues);
    gr.can_read_user_criteria = commaValues.join(',');
    gr.update();
}

 

 

Check the final value log whether it returns the proper output

 

Thanks,

Danish