- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-28-2024 04:14 AM
Hello,
We have build a customized external search source that looks up another instance of ServiceNow to provide knowledge articles on our Employee Service Centre, which works great.
However, we would like to exclude knowledge articles that have expired, i.e. where the 'valid to' date has passed.
Does anyone know what filter we need to add to the below query to achieve this?
(function(query) {
var results = [];
/* Calculate your results here. */
var url= "https://[INSTANCE NAME].service-now.com/api/now/table/kb_knowledge?sysparm_query=GOTO123TEXTQUERY321%3D" +
encodeURI(query) + "%5Eworkflow_state=published" + "%5Ekb_knowledge_base=0140807adb32370012127dad689619d8&sysparm_fields=sys_id%2Cnumber%2Cshort_description%2Ccategory%2Ctext";
var ws = new sn_ws.RESTMessageV2();
ws.setBasicAuth("[SERVICE ACCOUNT NAME]", "[SERVICE ACCOUNT PASSWORD]");
ws.setHttpMethod("get");
ws.setEndpoint(url);
var jsonOutput = ws.execute();
if (jsonOutput) {
var response = new JSON().decode(jsonOutput.getBody());
results = response.result;
results.forEach(function(result) {
result.url = "https://[INSTANCE NAME].service-now.com/kb_view.do?sysparm_article=" + result.sys_id;
result.target = "_blank";
result.primary = result.short_description;
result.secondary = result.number;
});
}
if (jsonOutput.haveError()){
gs.addErrorMessage(jsonOutput.getErrorMessage());
}
return results;
})(query);
Thanks,
Michael
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-28-2024 05:35 AM
Not 100% sure, but could you try it like this:
(function(query) {
var results = [];
/* Calculate your results here. */
var today = new GlideDateTime();
var todayString = today.getDisplayValueInternal(); // Get the date in the format required for the query
var url = "https://[INSTANCE NAME].service-now.com/api/now/table/kb_knowledge?sysparm_query=GOTO123TEXTQUERY321%3D" +
encodeURI(query) + "%5Eworkflow_state=published" +
"%5Ekb_knowledge_base=0140807adb32370012127dad689619d8" +
"%5Evalid_to>=javascript:gs.dateGenerate('" + todayString + "', 'start')&sysparm_fields=sys_id%2Cnumber%2Cshort_description%2Ccategory%2Ctext";
var ws = new sn_ws.RESTMessageV2();
ws.setBasicAuth("[SERVICE ACCOUNT NAME]", "[SERVICE ACCOUNT PASSWORD]");
ws.setHttpMethod("get");
ws.setEndpoint(url);
var jsonOutput = ws.execute();
if (jsonOutput) {
var response = new JSON().decode(jsonOutput.getBody());
results = response.result;
results.forEach(function(result) {
result.url = "https://[INSTANCE NAME].service-now.com/kb_view.do?sysparm_article=" + result.sys_id;
result.target = "_blank";
result.primary = result.short_description;
result.secondary = result.number;
});
}
if (jsonOutput.haveError()) {
gs.addErrorMessage(jsonOutput.getErrorMessage());
}
return results;
})(query);
Please mark any helpful or correct solutions as such. That helps others find their solutions.
Mark
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-28-2024 05:35 AM
Not 100% sure, but could you try it like this:
(function(query) {
var results = [];
/* Calculate your results here. */
var today = new GlideDateTime();
var todayString = today.getDisplayValueInternal(); // Get the date in the format required for the query
var url = "https://[INSTANCE NAME].service-now.com/api/now/table/kb_knowledge?sysparm_query=GOTO123TEXTQUERY321%3D" +
encodeURI(query) + "%5Eworkflow_state=published" +
"%5Ekb_knowledge_base=0140807adb32370012127dad689619d8" +
"%5Evalid_to>=javascript:gs.dateGenerate('" + todayString + "', 'start')&sysparm_fields=sys_id%2Cnumber%2Cshort_description%2Ccategory%2Ctext";
var ws = new sn_ws.RESTMessageV2();
ws.setBasicAuth("[SERVICE ACCOUNT NAME]", "[SERVICE ACCOUNT PASSWORD]");
ws.setHttpMethod("get");
ws.setEndpoint(url);
var jsonOutput = ws.execute();
if (jsonOutput) {
var response = new JSON().decode(jsonOutput.getBody());
results = response.result;
results.forEach(function(result) {
result.url = "https://[INSTANCE NAME].service-now.com/kb_view.do?sysparm_article=" + result.sys_id;
result.target = "_blank";
result.primary = result.short_description;
result.secondary = result.number;
});
}
if (jsonOutput.haveError()) {
gs.addErrorMessage(jsonOutput.getErrorMessage());
}
return results;
})(query);
Please mark any helpful or correct solutions as such. That helps others find their solutions.
Mark