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
Tera Sage
Tera Sage

Hi @Michael51 ,

 

Can u try using below code:

 

var commaValues = [];

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());
    commaValues = '';
    var val = gr.can_read_user_criteria;
    commaValues = val.split(',');
    var index = commaValues.indexOf('070120ae1b35695072e6eb99bd4bcb2a');
    var x = commaValues.splice(index, 1);
    gr.can_read_user_criteria = commaValues.join(',');
    gr.update();
}

 

Thanks,

Danish

 

@Danish Bhairag2 , I need to remove the criteria i should not add

Hi @Michael51 ,

 

Yes it will remove the specific value from the field & updated it with remaining values.

 

For eg:

[1, 2, 3, 4, 5] from this i want to remove 2 & update the value so the output which should remain would be 1,3,4,5

 

Thanks,

Danish

 

Please let me know if my understanding is correct? @Michael51 

 

Thanks,

Danish