GlideSystem

box a few places. This expects a number for the quantity of milleseconds to delay the server processing.

var timeInMS = 1000;//1 second in milleseconds
gs.sleep(timeInMs);

suppressTextIndex

This is undocumented and found a few places, one of which is the UI Page service_preview_generator.

<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
<g:evaluate var="jvar_new_staged_id" jelly="true">
var oldStagedGR = new GlideRecord("sc_ic_item_staging");
var newStagedID = "";
if (oldStagedGR.get(jelly.sysparm_staged_item)) {
var updateSynchWasSuppressed = gs.suppressUpdateSynch(true);
var textIndexWasSuppressed = gs.suppressTextIndex(true);
try {
newStagedID = copyDraftService(jelly.sysparm_staged_item, oldStagedGR.name);
var newStagedGR = new GlideRecord("sc_ic_item_staging");
newStagedGR.get(newStagedID);
sc_ic_Factory.wrap(newStagedGR).publish();
} catch(e) {
} finally {
gs.suppressUpdateSynch(updateSynchWasSuppressed);
gs.suppressTextIndex(textIndexWasSuppressed);
}
}
newStagedID;
</g:evaluate>
<j:if test="${newStagedID != ''}">
<script>
document.location.href = "service_preview.do?sysparm_id=${jvar_new_staged_id}${AMP}sysparm_preview=true";
</script>
</j:if>
</j:jelly>

suppressUpdateSynch

This is undocumented and found a few places, one of which is the UI Action called, "Preview Service".

var newServiceID = '';
var wasSuppressed = gs.suppressUpdateSynch(true);
try {
var newServiceID = copyDraftService(current.getUniqueValue(), current.name);
var newServiceGR = new GlideRecord("sc_ic_item_staging");
newServiceGR.get(newServiceID);
sc_ic_Factory.wrap(newServiceGR).publish();
} catch(e) {
} finally {
gs.suppressUpdateSynch(wasSuppressed);
}
if (newServiceID != '')
action.setRedirectURL("service_preview.do?sysparm_id=" + newServiceID + "&sysparm_preview=true&sysparm_staged_image_id=" + current.getUniqueValue());

tableExists

Determines if a database table exists.

gs.tableExists('live_group_profile');
// true if table exists, otherwise false.

templateOrMacroExists

This is undocumented and found on the catalog_item UI Macro;

<g2:evaluate var="jvar_exists">
var templateName ='com.glideapp.servicecatalog_' +
sc_cat_item.sys_class_name + '.xml';
gs.templateOrMacroExists(templateName);
</g2:evaluate>

unloadChoices

This is not documented and found on the Choices unload business rule for Table [sys_choice]. I believe this is what adds all choices to an update set when the sys_choice gets modified. It's just a guess.

gs.unloadChoices(current.name, current.element, 'true');

unWrap

This is not documented and found on the assesment_redirect UI Page. Below I've listed the HTML and client script.

<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
<g2:evaluate var="jvar_unwrapped_url" jelly="true">
var url = jelly.sysparm_survey_url;
url = gs.unWrap(url);
url;
</g2:evaluate>
${gs.getMessage("Redirecting to your survey")}...
</j:jelly>
document.location.href = "$[JS:jvar_unwrapped_url]";

updateSave

gs.updateSave(current);

urlDecode

This doesn't seem to work. I tried the following script and it just sets the variable to undefined. Below is what the docs say about this;

Replaces UTF-8 encoded characters with ASCII characters.

var decoded = gs.urlDecode('https://dev32369.service-now.com/nav_to.do?uri=%2Fsys.scripts.do');
gs.print(decoded);
// *** Script: undefined

urlEncode

This doesn't seem to work. I tried the following script and it just sets the variable to undefined. Below is what the docs say about this;

Encodes non-ASCII characters, unsafe ASCII characters, and spaces so the returned string can be used on the Internet. Uses UTF-8 encoding. Uses percent (%) encoding.

var encoded = gs.urlEncode('https://dev32369.service-now.com/nav_to.do?uri=%2Fsys.scripts.do');
gs.print(encoded);
// *** Script: undefined

userID

This returns the logged in user's sys_id.

var userID = gs.userID();
gs.print(userID);
// *** Script: d7004dd20f021300fc69cdbce1050eff

user_id

var userID = gs.user_id();
gs.print(userID);
// *** Script: d7004dd20f021300fc69cdbce1050eff

warn

This method was added around the time scoped apps were added as gs.print was made unavailable. In anycase, this is just a level of logging.

gs.warn('This is a message with {0}, {1}, {2}, {3}, {4} parameters','one','two','three','four', 'five');
//*** Script: This is a message with one, two, three, four, five parameters

workflowFlush

xmlToJSON

Takes an XML string and returns a JSON object. This seems to be similar to the XMLHelper script include function, toObject.

var xmlStr = "";
xmlStr += "<Names>";
xmlStr += " <Name>";
xmlStr += " <FirstName>John</FirstName>";
xmlStr += " <LastName>Smith</LastName>";
xmlStr += " </Name>";
xmlStr += " <Name>";
xmlStr += " <FirstName>James</FirstName>";
xmlStr += " <LastName>White</LastName>";
xmlStr += " </Name>";
xmlStr += "</Names>";
var xmlObj = gs.xmlToJSON(xmlStr);
gs.info(JSON.stringify(xmlObj,'',' '));
/*** Script: {
"Names": {
"Name": [
{
"FirstName": "John",
"LastName": "Smith"
},
{
"FirstName": "James",
"LastName": "White"
}
]
}
}*/