start
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
start [2024/02/19 10:13] – johnsonjohn | start [2024/02/26 08:26] (current) – [My Favorites] johnsonjohn | ||
---|---|---|---|
Line 2: | Line 2: | ||
----- | ----- | ||
+ | ======My Code====== | ||
+ | =====NON UTIL USER===== | ||
+ | < | ||
+ | // Run DEBUG NOW only. Do not run EXECUTE NOW. This will give you a list of users that are NOT ITIL USERS. | ||
+ | // This list of NON ITIL users will show up in the User Logs. | ||
+ | ClearUserLog(); | ||
+ | var gr = new GlideRecord(' | ||
+ | gr.addEncodedQuery(' | ||
+ | gr.query(); | ||
+ | while (gr.next()) { | ||
+ | var gr2 = new GlideRecord(' | ||
+ | gr2.addEncodedQuery(' | ||
+ | gr2.query(); | ||
+ | if (!gr2.hasNext()) { | ||
+ | // | ||
+ | UserLog(gr.user.getDisplayValue() + ' ' + gr.role.getDisplayValue()); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | ----- | ||
+ | =====My Favorites===== | ||
+ | [[https:// | ||
+ | |||
+ | ------ | ||
======JavaScript Snippets====== | ======JavaScript Snippets====== | ||
=====Getting Started===== | =====Getting Started===== | ||
< | < | ||
+ | // | ||
+ | gs.info(' | ||
+ | </ | ||
+ | < | ||
+ | // | ||
+ | var gr = new GlideRecord(' | ||
+ | gr.addActiveQuery(); | ||
+ | gr.query(); | ||
+ | while (gr.next()) { | ||
+ | gs.info(gr.getValue(' | ||
+ | } | ||
</ | </ | ||
+ | < | ||
+ | // | ||
+ | function onLoad() { | ||
+ | |||
+ | alert(' | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||
----- | ----- | ||
=====Statements and Syntax===== | =====Statements and Syntax===== | ||
< | < | ||
+ | // | ||
+ | |||
+ | // Required: | ||
+ | var i = 0; i++ // <-- semicolon obligatory | ||
+ | // (but optional before newline) | ||
+ | var i = 0 // <-- semicolon optional | ||
+ | i++ // <-- semicolon optional | ||
+ | |||
+ | // Optional: | ||
+ | var i; // variable declaration | ||
+ | i = 5; // value assignment | ||
+ | i = i + 1; // value assignment | ||
+ | i++; // same as above | ||
+ | var x = 9; // declaration & assignment | ||
+ | var fun = function() {...}; | ||
+ | alert(" | ||
+ | |||
+ | // Avoid | ||
+ | // NO semicolons after }: | ||
+ | if (...) {...} else {...} | ||
+ | for (...) {...} | ||
+ | while (...) {...} | ||
+ | |||
+ | // BUT: | ||
+ | do {...} while (...); | ||
+ | |||
+ | // function statement: | ||
+ | function (arg) { /*do this*/ } // NO semicolon after } | ||
+ | |||
+ | // Exception: | ||
+ | for (var i=0; i < 10; i++) {/ | ||
+ | for (var i=0; i < 10; i++;) {/ | ||
</ | </ | ||
Line 16: | Line 93: | ||
=====Variables===== | =====Variables===== | ||
< | < | ||
+ | // L03S01 - Simple variables & good/bad variable names | ||
+ | // | ||
+ | var name = ' | ||
+ | var i = 0; // Simple integer variable | ||
+ | var answer = true; // Simple boolean variable | ||
+ | // Naming | ||
+ | var c = " | ||
+ | var case = ' | ||
+ | var lastEntryInTheListWithRelatedRecords = true; // a bit long? | ||
+ | // personCount | ||
+ | // personList | ||
+ | // personObj | ||
+ | // personGr | ||
</ | </ | ||
----- | ----- | ||
=====Simple Arithmetic Operators===== | =====Simple Arithmetic Operators===== | ||
< | < | ||
+ | // L04S01 - Mathematical operators | ||
+ | // | ||
+ | |||
+ | // Assignment | ||
+ | var a = 12; | ||
+ | var b = 3; | ||
+ | |||
+ | // Addition | ||
+ | gs.info(2 + 2); | ||
+ | gs.info(a + 2); | ||
+ | b = b + 2; | ||
+ | // b += 2; // shorthand for the line above | ||
+ | gs.info(a + b); | ||
+ | |||
+ | // Increment by 1 | ||
+ | a++; | ||
+ | gs.info(a); | ||
+ | |||
+ | // Decrement by 1 | ||
+ | b--; | ||
+ | gs.info(b); | ||
+ | |||
+ | // Multiply | ||
+ | gs.info(a * b); | ||
+ | |||
+ | // Division | ||
+ | gs.info(a / b); | ||
+ | |||
+ | // Modulo - get the remainder of a division | ||
+ | gs.info('' | ||
+ | gs.info(a); | ||
+ | gs.info(b); | ||
+ | gs.info(a % b); | ||
+ | var c = (5 + 4) * 2; | ||
+ | gs.info(c); | ||
</ | </ | ||
----- | ----- | ||
=====Common Error Messages===== | =====Common Error Messages===== | ||
< | < | ||
+ | // L05S01 - Common error messages | ||
+ | // | ||
+ | ClearUserLog(); | ||
+ | UserLog(); | ||
+ | gs.info(myUnknownVariable); | ||
+ | ga.info(' | ||
</ | </ | ||
----- | ----- | ||
=====Introduction to Strings===== | =====Introduction to Strings===== | ||
< | < | ||
+ | // L06S01 - Strings | ||
+ | // | ||
+ | var firstName = " | ||
+ | var lastName | ||
+ | var myCar = " | ||
+ | // Note the use of + when strings are involved | ||
+ | var name = firstName + ' ' + lastName; | ||
+ | gs.info(name); | ||
+ | gs.info(' | ||
</ | </ | ||
----- | ----- | ||
=====Special String Characters===== | =====Special String Characters===== | ||
< | < | ||
+ | // L07S01 - Special characters | ||
+ | // | ||
+ | // \n = new line | ||
+ | // \t = tab | ||
+ | // \\ = backslash | ||
+ | // \' = single quote | ||
+ | // \" = double quote | ||
+ | // | ||
+ | gs.info(' | ||
+ | gs.info(' | ||
+ | gs.info(' | ||
</ | </ | ||
----- | ----- | ||
=====Data Type Conversions===== | =====Data Type Conversions===== | ||
< | < | ||
+ | // L08S01 - Changing and detecting variable types | ||
+ | // | ||
+ | var i = 5; | ||
+ | var iStr = i.toString(); | ||
+ | gs.info(typeof i); | ||
+ | gs.info(typeof iStr); | ||
+ | var n = parseInt(iStr); | ||
+ | gs.info(typeof n + ' n=' + n); | ||
</ | </ | ||
----- | ----- | ||
=====Commenting===== | =====Commenting===== | ||
< | < | ||
+ | // L09S01 - Commenting | ||
+ | // | ||
+ | |||
+ | // This is a single line comment | ||
+ | |||
+ | /* This is another way to comment */ | ||
+ | |||
+ | /* | ||
+ | This is a multi-line comment. | ||
+ | This code is commented out! | ||
+ | var name = ' | ||
+ | */ | ||
+ | gs.info(' | ||
</ | </ | ||
Line 51: | Line 222: | ||
=====Comparisons===== | =====Comparisons===== | ||
< | < | ||
+ | // L10S01 - Arithmetic Operators | ||
+ | // | ||
+ | var a = 0; | ||
+ | var b = 1; | ||
+ | gs.info(a < b); | ||
+ | var n = ' | ||
+ | var i = 3; | ||
+ | gs.info(n == i); // REALLY?!! | ||
+ | gs.info(i = 4); // WATCH OUT!!! | ||
</ | </ | ||
----- | ----- | ||
=====If Statements and Boolean Logic===== | =====If Statements and Boolean Logic===== | ||
< | < | ||
+ | // S11S01 - If Statements | ||
+ | // | ||
+ | var a = 1; | ||
+ | var b = 3; | ||
+ | var c = 5; | ||
+ | if (a < b) | ||
+ | gs.info(' | ||
+ | // else | ||
+ | if (a < b) | ||
+ | gs.info(' | ||
+ | else | ||
+ | gs.info(' | ||
+ | |||
+ | // Else if and else | ||
+ | if (a < b) | ||
+ | gs.info(' | ||
+ | else if (a > b) | ||
+ | gs.info(' | ||
+ | else if (a == b) | ||
+ | gs.info(' | ||
+ | else | ||
+ | gs.info(' | ||
+ | |||
+ | if (a < b) | ||
+ | if (b < c) | ||
+ | gs.info(' | ||
+ | </ | ||
+ | < | ||
+ | // S11S02 - Boolean logic | ||
+ | // | ||
+ | // AND (&& | ||
+ | // +---------+---------+---------+ | ||
+ | // | | ||
+ | // +---------+---------+---------+ | ||
+ | // | true | ||
+ | // +---------+---------+---------+ | ||
+ | // | false | false | false | | ||
+ | // +---------+---------+---------+ | ||
+ | // | ||
+ | // OR (||) - Either must be true | ||
+ | // +---------+---------+---------+ | ||
+ | // | | ||
+ | // +---------+---------+---------+ | ||
+ | // | true | ||
+ | // +---------+---------+---------+ | ||
+ | // | false | true | ||
+ | // +---------+---------+---------+ | ||
+ | // | ||
+ | // NOT (!) - reverse the logic | ||
+ | // +---------+---------+---------+ | ||
+ | // | | ||
+ | // +---------+---------+---------+ | ||
+ | // | | ||
+ | // +---------+---------+---------+ | ||
+ | // | ||
+ | var a = 1; | ||
+ | var b = 3; | ||
+ | var c = 5; | ||
+ | |||
+ | if (a < b && b < c) | ||
+ | gs.info(' | ||
+ | |||
+ | if (b > a || b > c) | ||
+ | gs.info(' | ||
+ | |||
+ | // Note, indentation can be deceptive!!! | ||
+ | if (a < b) | ||
+ | if (b < c) { | ||
+ | gs.info(' | ||
+ | gs.info(' | ||
+ | } | ||
+ | else | ||
+ | gs.info(' | ||
+ | |||
+ | var valveOpen = true; | ||
+ | if (valveOpen == true) | ||
+ | gs.info(' | ||
+ | |||
+ | if (bool) | ||
+ | gs.info(' | ||
+ | |||
+ | var valveOpen = false; | ||
+ | if (!valveOpen) | ||
+ | gs.info(' | ||
</ | </ | ||
----- | ----- | ||
=====The Ternary Operator===== | =====The Ternary Operator===== | ||
< | < | ||
+ | // L12S01 - The ternary operator | ||
+ | // | ||
+ | // Could have written... | ||
+ | var valveOpen = true; | ||
+ | var openStatusString; | ||
+ | if (valveOpen) | ||
+ | openStatusString = ' | ||
+ | else | ||
+ | openStatusString = ' | ||
+ | gs.info(' | ||
+ | // Introducing a shortcut way... | ||
+ | var openStatusString = (valveOpen) ? ' | ||
+ | gs.info(' | ||
</ | </ | ||
----- | ----- | ||
=====The Switch Statement===== | =====The Switch Statement===== | ||
< | < | ||
+ | // L13S01 - Multiple cases | ||
+ | // | ||
+ | // Using if/else if/else if... | ||
+ | var level = 5; | ||
+ | var message = ''; | ||
+ | if (level == 0) | ||
+ | message = ' | ||
+ | else if (level == 1 || level == 2) | ||
+ | message = ' | ||
+ | else if (level == 3) | ||
+ | message = ' | ||
+ | else if (level == 4) | ||
+ | message = ' | ||
+ | else if (level == 5) | ||
+ | message = ' | ||
+ | else | ||
+ | message = ' | ||
+ | gs.info(' | ||
+ | </ | ||
+ | < | ||
+ | // L13S02 - Multiple cases | ||
+ | // | ||
+ | // Using the switch statement | ||
+ | var level = 5; | ||
+ | var message = ''; | ||
+ | switch (level) { | ||
+ | case 0: | ||
+ | message = ' | ||
+ | break; | ||
+ | |||
+ | case 1: | ||
+ | case 2: | ||
+ | message = ' | ||
+ | break; | ||
+ | |||
+ | case 3: // Warning - what's wrong with case 3? | ||
+ | message = ' | ||
+ | case 4: | ||
+ | message = ' | ||
+ | break; | ||
+ | |||
+ | case 5: | ||
+ | message = ' | ||
+ | break; | ||
+ | default: | ||
+ | message = ' | ||
+ | } | ||
+ | gs.info(' | ||
</ | </ | ||
----- | ----- | ||
=====Truthy Falsy===== | =====Truthy Falsy===== | ||
< | < | ||
+ | // L14S01 - Truthy and Falsy | ||
+ | // | ||
+ | // Simple case of true and false | ||
+ | // | ||
+ | var boolTrue = true; | ||
+ | var boolFalse = false; | ||
+ | gs.info(' | ||
+ | </ | ||
+ | < | ||
+ | // L14S02 - Truthy and Falsy | ||
+ | // | ||
+ | |||
+ | // What about numbers | ||
+ | // | ||
+ | var num = 0; // <== try with different numbers | ||
+ | gs.info(num + ' is ' + ((num) ? ' | ||
+ | |||
+ | </ | ||
+ | < | ||
+ | // L14S03 - Truthy and Falsy | ||
+ | // | ||
+ | |||
+ | // Take a look at strings | ||
+ | // | ||
+ | var string1; | ||
+ | var string2 = null; | ||
+ | var string3 = ' | ||
+ | gs.info(' | ||
+ | gs.info(' | ||
+ | gs.info(' | ||
</ | </ | ||
----- | ----- | ||
=====While Loop===== | =====While Loop===== | ||
< | < | ||
+ | // L15S01 - Simple while loop | ||
+ | // | ||
+ | var i = 0; | ||
+ | while (i < 5) { | ||
+ | gs.info(i); | ||
+ | i++; | ||
+ | } | ||
+ | gs.info(' | ||
+ | </ | ||
+ | < | ||
+ | // L15S02 - breaking out of a while loop | ||
+ | // | ||
+ | var i = 0; | ||
+ | while (true) { | ||
+ | if (i == 5) | ||
+ | break; | ||
+ | gs.info(i); | ||
+ | ++i; | ||
+ | } | ||
+ | gs.info(' | ||
+ | </ | ||
+ | < | ||
+ | // L15S03 - Continue - jumping back to the while condition | ||
+ | // | ||
+ | var i = 0; | ||
+ | var done = false; | ||
+ | while (!done) { | ||
+ | if (i < 5) { | ||
+ | ++i; | ||
+ | gs.info(i + ' done=' + done); | ||
+ | continue; | ||
+ | } | ||
+ | gs.info(' | ||
+ | done = true; | ||
+ | } | ||
+ | gs.info(i); | ||
</ | </ | ||
----- | ----- | ||
=====For Loop===== | =====For Loop===== | ||
< | < | ||
+ | // L16S01 - For loop | ||
+ | // | ||
+ | // Note: break and continue work here too! | ||
+ | for (var i = 0; i < 5; i++) { | ||
+ | gs.info(i); | ||
+ | } | ||
+ | gs.info(' | ||
</ | </ | ||
----- | ----- | ||
=====Do While Loop===== | =====Do While Loop===== | ||
< | < | ||
+ | // L17S01 - do-while | ||
+ | // | ||
+ | var i = 0; | ||
+ | gs.info(' | ||
+ | do { | ||
+ | gs.info(' | ||
+ | ++i; | ||
+ | } while (i < 5); | ||
+ | gs.info(' | ||
</ | </ | ||
----- | ----- | ||
=====Nested Loops===== | =====Nested Loops===== | ||
< | < | ||
+ | // L18S01 - Nested loops | ||
+ | // | ||
+ | for (var i = 0; i < 5; i++) { | ||
+ | for (var j = 0; j < 3; j++) { | ||
+ | gs.info(' | ||
+ | } | ||
+ | } | ||
+ | gs.info(' | ||
</ | </ | ||
----- | ----- | ||
=====Functions===== | =====Functions===== | ||
< | < | ||
+ | // L19S01 - Functions | ||
+ | // | ||
+ | function sayHello() { | ||
+ | gs.info(' | ||
+ | } | ||
+ | sayHello(); | ||
+ | </ | ||
+ | < | ||
+ | // L19S02 - Function with a parameter | ||
+ | // | ||
+ | function toCelsius(fahrenheit) { | ||
+ | |||
+ | var c = (5 / 9) * (fahrenheit - 32); | ||
+ | |||
+ | gs.info(c); | ||
+ | } | ||
+ | toCelsius(32); | ||
+ | toCelsius(100); | ||
+ | </ | ||
+ | < | ||
+ | // L19S03 - Function with a return value | ||
+ | // | ||
+ | function toCelsius(fahrenheit) { | ||
+ | |||
+ | return (5 / 9) * (fahrenheit - 32); | ||
+ | |||
+ | } | ||
+ | var c = toCelsius(32); | ||
+ | gs.info(c); | ||
+ | c = toCelsius(212); | ||
+ | gs.info(c); | ||
+ | </ | ||
+ | < | ||
+ | // L19S04 - Local variables scope | ||
+ | // | ||
+ | function toCelsius(fahrenheit) { | ||
+ | |||
+ | // c is only known in the function toCelsius() | ||
+ | var c = (5 / 9) * (fahrenheit - 32); | ||
+ | |||
+ | return c; | ||
+ | } | ||
+ | gs.info(c); // What happened? | ||
+ | |||
+ | </ | ||
+ | < | ||
+ | // L19S05 - Global variables and local | ||
+ | // | ||
+ | var convertTo = ' | ||
+ | |||
+ | function toCelsius(f) { | ||
+ | |||
+ | var c = (5 / 9) * (f - 32); | ||
+ | | ||
+ | return c; | ||
+ | } | ||
+ | |||
+ | function toFahrenheit(c) { | ||
+ | |||
+ | var f = c * 9 / 5 + 32; | ||
+ | | ||
+ | return f; | ||
+ | } | ||
+ | |||
+ | function convertTemp(temp) { | ||
+ | |||
+ | // use the global variable to determine conversion | ||
+ | if (convertTo == ' | ||
+ | return toCelsius(temp); | ||
+ | } else { | ||
+ | return toFahrenheit(temp); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | gs.info(convertTemp(100)); | ||
+ | </ | ||
+ | < | ||
+ | // L19S06 - Self running function | ||
+ | // | ||
+ | |||
+ | // This code is outside the function | ||
+ | var i = 20; | ||
+ | |||
+ | (function() { | ||
+ | |||
+ | // Local variable | ||
+ | i = 10; // uh-oh, forgot the var! | ||
+ | |||
+ | gs.info(' | ||
+ | | ||
+ | }()); | ||
+ | |||
+ | i = 3; | ||
+ | gs.info(' | ||
</ | </ | ||
----- | ----- | ||
=====Try Catch Finally Statements===== | =====Try Catch Finally Statements===== | ||
< | < | ||
+ | // L20S01 - bad script w/o try/catch | ||
+ | // | ||
+ | |||
+ | for (var i = 0; i < 5; i++) { | ||
+ | gs.info(' | ||
+ | } | ||
+ | gs.info(' | ||
+ | </ | ||
+ | < | ||
+ | // L20S02 - Trapping that error | ||
+ | // | ||
+ | try { | ||
+ | for (var i = 0; i < 5; i++) { | ||
+ | gs.info(' | ||
+ | } | ||
+ | } catch (e) { | ||
+ | gs.error(' | ||
+ | } | ||
+ | gs.info(' | ||
+ | </ | ||
+ | < | ||
+ | // L20S03 - And finally… | ||
+ | // | ||
+ | try { | ||
+ | for (var i = 0; i < 5; i++) { | ||
+ | gs.info(' | ||
+ | } | ||
+ | } catch (e) { | ||
+ | gs.error(' | ||
+ | } finally { | ||
+ | gs.info(' | ||
+ | } | ||
</ | </ | ||
Line 106: | Line 643: | ||
=====SNOW Glide Record===== | =====SNOW Glide Record===== | ||
< | < | ||
+ | // L21S01 - Simple Database query | ||
+ | // | ||
+ | |||
+ | // Get and display numbers on all incidents | ||
+ | var incGr = new GlideRecord(' | ||
+ | incGr.query(); | ||
+ | |||
+ | while (incGr.next()) { | ||
+ | gs.info(incGr.getValue(' | ||
+ | } | ||
</ | </ | ||
- | ----- | ||
- | =====Getting===== | ||
< | < | ||
+ | // L21S02 - Get and display numbers on all incidents v2 | ||
+ | // | ||
+ | var incGr = new GlideRecord(' | ||
+ | incGr.addQuery(' | ||
+ | incGr.orderBy(' | ||
+ | incGr.setLimit(5); | ||
+ | incGr.query(); | ||
+ | |||
+ | while (incGr.next()) { | ||
+ | gs.info(incGr.getValue(' | ||
+ | } | ||
+ | </ | ||
+ | < | ||
+ | // L21S03 - What is ' | ||
+ | // | ||
+ | var incGr = new GlideRecord(' | ||
+ | incGr.setLimit(1); | ||
+ | incGr.query(); | ||
+ | |||
+ | if (incGr.next()) { | ||
+ | var dotNumber = incGr.number; | ||
+ | var gvNumber | ||
+ | gs.info(' | ||
+ | } | ||
+ | |||
+ | // Why should I care? I'll show you when we get to arrays... | ||
+ | |||
+ | </ | ||
+ | < | ||
+ | // L21S04 - getting a single record quickly | ||
+ | // Just need one record? Use .get(SYSID) or .get(' | ||
+ | // | ||
+ | var incGr = new GlideRecord(' | ||
+ | |||
+ | if (incGr.get(' | ||
+ | gs.info(incGr.getValue(' | ||
+ | } | ||
+ | |||
+ | // or... | ||
+ | var incGr = new GlideRecord(' | ||
+ | if (incGr.get(' | ||
+ | gs.info(incGr.getValue(' | ||
+ | } | ||
</ | </ | ||
----- | ----- | ||
- | =====Introduction | + | =====Introduction |
< | < | ||
+ | // L22S01 - Arrays | ||
+ | // | ||
+ | // Make a simple array | ||
+ | // | ||
+ | // Optional declaration, | ||
+ | // var list = Array(); | ||
+ | var list = []; | ||
+ | list[0] = 1; | ||
+ | list[1] = 3; | ||
+ | list[2] = 5; | ||
+ | gs.info(' | ||
+ | </ | ||
+ | < | ||
+ | // L22S02 - Shorter way | ||
+ | // | ||
+ | var list = [1, 3, 5]; | ||
+ | gs.info(' | ||
+ | </ | ||
+ | < | ||
+ | // L22S03 - Loops and arrays | ||
+ | // | ||
+ | var list = [1, 3, 5]; | ||
+ | for (var i = 0; i < list.length; | ||
+ | gs.info(' | ||
+ | } | ||
+ | |||
+ | // Slightly better | ||
+ | var list = [1, 3, 5]; | ||
+ | var len = list.length; | ||
+ | for (var i = 0; i < len; i++) { | ||
+ | gs.info(' | ||
+ | } | ||
</ | </ | ||
----- | ----- | ||
=====Array For Each===== | =====Array For Each===== | ||
< | < | ||
+ | // L23S01 forEach with external function | ||
+ | // | ||
+ | var list = [1, 3, 5]; | ||
+ | |||
+ | list.forEach(myFunction); | ||
+ | |||
+ | function myFunction(item) { | ||
+ | gs.info(' | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | < | ||
+ | // L23S02 embedded forEach | ||
+ | // | ||
+ | var list = [1, 3, 5]; | ||
+ | |||
+ | list.forEach(function (item) { | ||
+ | gs.info(' | ||
+ | }); | ||
+ | |||
+ | </ | ||
+ | < | ||
+ | // L23S03 - What else can you get.. | ||
+ | // | ||
+ | var list = [' | ||
+ | |||
+ | list.forEach(function (item, index, arr) { | ||
+ | gs.info(' | ||
+ | }); | ||
</ | </ | ||
Line 126: | Line 775: | ||
=====Common Array Methods===== | =====Common Array Methods===== | ||
< | < | ||
+ | // L24S01 - Common array methods/ | ||
+ | // | ||
+ | var list = [' | ||
+ | gs.info(' | ||
+ | </ | ||
+ | < | ||
+ | // L24S02 - join(string) | ||
+ | // | ||
+ | var list = [' | ||
+ | gs.info(' | ||
+ | |||
+ | // push(value1, | ||
+ | list.push(' | ||
+ | list.push(' | ||
+ | gs.info(' | ||
+ | |||
+ | // pop() | ||
+ | list.pop(); | ||
+ | gs.info(' | ||
+ | </ | ||
+ | < | ||
+ | // L24S03 - shift() | ||
+ | // | ||
+ | var list = [' | ||
+ | gs.info(' | ||
+ | list.shift(); | ||
+ | gs.info(' | ||
+ | gs.info(' | ||
+ | |||
+ | </ | ||
+ | < | ||
+ | // L24S04 - unshift | ||
+ | // | ||
+ | var list = [' | ||
+ | var newLength = list.unshift(' | ||
+ | gs.info(' | ||
+ | </ | ||
+ | < | ||
+ | // L24S05 - splice(position, | ||
+ | // | ||
+ | var names = [" | ||
+ | gs.info(names.join(', | ||
+ | names.splice(2, | ||
+ | gs.info(names.join(', | ||
+ | </ | ||
+ | < | ||
+ | // L24S06 - slice(start, | ||
+ | // | ||
+ | var names = [" | ||
+ | gs.info(names.join(', | ||
+ | var subNames = names.slice(1, | ||
+ | gs.info(subNames.join(', | ||
+ | |||
+ | </ | ||
+ | < | ||
+ | // L24S08 - Reverse the elements of an array | ||
+ | // | ||
+ | var names = [" | ||
+ | names.reverse(); | ||
+ | gs.info(names.join(', | ||
+ | </ | ||
+ | < | ||
+ | // L24S09 - Getting the value | ||
+ | // | ||
+ | var list = []; | ||
+ | var incGr = new GlideRecord(' | ||
+ | incGr.addQuery(' | ||
+ | incGr.query(); | ||
+ | |||
+ | while (incGr.next()) { | ||
+ | list.push(incGr.getValue(' | ||
+ | } | ||
+ | |||
+ | gs.info(' | ||
</ | </ | ||
----- | ----- | ||
=====SNOW Array Utility===== | =====SNOW Array Utility===== | ||
< | < | ||
+ | // L25S01 - ArrayUtil | ||
+ | // | ||
+ | var au = new ArrayUtil(); | ||
+ | var names = [ | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | ]; | ||
+ | var newNames = au.unique(names); | ||
+ | gs.info(newNames.join(', | ||
</ | </ | ||
----- | ----- | ||
=====Introduction To Objects===== | =====Introduction To Objects===== | ||
< | < | ||
+ | // L26S01 - Simple Objects | ||
+ | // | ||
+ | var box = {}; | ||
+ | box.height | ||
+ | box.width | ||
+ | box.length | ||
+ | box.material = " | ||
+ | box.open | ||
+ | gs.info(box.material); | ||
+ | </ | ||
+ | < | ||
+ | // L26S02 - Bracket notation… | ||
+ | // | ||
+ | var vehicle = {}; | ||
+ | vehicle[' | ||
+ | vehicle[' | ||
+ | vehicle[' | ||
+ | gs.info(vehicle[' | ||
+ | |||
+ | </ | ||
+ | < | ||
+ | // L26S03 - Shortcut - note the double quotes | ||
+ | // | ||
+ | var vehicle = { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }; | ||
+ | gs.info(vehicle[' | ||
</ | </ | ||
Line 141: | Line 907: | ||
=====Checking If Object Has Property===== | =====Checking If Object Has Property===== | ||
< | < | ||
+ | // L27S01 - hasOwnProperty | ||
+ | // | ||
+ | var vehicle = { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }; | ||
+ | gs.info(vehicle.hasOwnProperty(" | ||
+ | gs.info(vehicle.hasOwnProperty(" | ||
</ | </ | ||
----- | ----- | ||
=====Finding All Properties in Object===== | =====Finding All Properties in Object===== | ||
< | < | ||
+ | // L28S01 - Get object keys | ||
+ | // | ||
+ | var vehicle = { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }; | ||
+ | for (var key in vehicle) { | ||
+ | gs.info(' | ||
+ | } | ||
</ | </ | ||
----- | ----- | ||
=====Array of Objects===== | =====Array of Objects===== | ||
< | < | ||
+ | // L29S01 - Array of Objects | ||
+ | // | ||
+ | var bookList = [ | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | ]; | ||
+ | var len = bookList.length; | ||
+ | gs.info(' | ||
+ | for (var i = 0; i < len; i++) { | ||
+ | var book = bookList[i]; | ||
+ | gs.info(i + ' - Title: ' + book.title + ' - Author: ' + book.author); | ||
+ | } | ||
</ | </ | ||
----- | ----- | ||
=====JSON Stringify and Parse===== | =====JSON Stringify and Parse===== | ||
< | < | ||
+ | // L30S01 - Stringify and Parse | ||
+ | // | ||
+ | var bookList = [ | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | ]; | ||
+ | gs.info(bookList); | ||
+ | var bookListStr = JSON.stringify(bookList); | ||
+ | gs.info(bookListStr); | ||
+ | |||
+ | var bookListStrFormat = JSON.stringify(bookList, | ||
+ | gs.info(bookListStrFormat); | ||
+ | </ | ||
+ | < | ||
+ | // L30S02 - Parse example | ||
+ | // | ||
+ | var libraryStr = ' | ||
+ | gs.info(' | ||
+ | var libraryObj = JSON.parse(libraryStr); | ||
+ | gs.info(' | ||
+ | gs.info(JSON.stringify(libraryObj, | ||
</ | </ | ||
----- | ----- | ||
=====More String Methods===== | =====More String Methods===== | ||
< | < | ||
+ | // L31S01 More string stuff | ||
+ | // Find the position of a character or substring | ||
+ | // | ||
+ | var subject = ' | ||
+ | var pos = subject.indexOf(' | ||
+ | gs.info(pos); | ||
+ | </ | ||
+ | < | ||
+ | // L31S02 - Use the position of a character/ | ||
+ | // | ||
+ | var short_description = ' | ||
+ | if (short_description.indexOf(' | ||
+ | gs.info(" | ||
+ | } | ||
+ | </ | ||
+ | < | ||
+ | // L31S03 - Get a substring | ||
+ | // | ||
+ | var str = ' | ||
+ | var pos = str.indexOf(' | ||
+ | var ritmNumber = str.substring(pos, | ||
+ | gs.info(ritmNumber); | ||
+ | </ | ||
+ | < | ||
+ | // L31S04 - Case matters with strings | ||
+ | // | ||
+ | var firstName = ' | ||
+ | var loginName = ' | ||
+ | if (loginName == firstName) { | ||
+ | gs.info(' | ||
+ | } else { | ||
+ | gs.info(' | ||
+ | } | ||
+ | </ | ||
+ | < | ||
+ | // L31S05 - Using toUpper or toLower for better matching | ||
+ | // | ||
+ | var firstName = ' | ||
+ | var loginName = ' | ||
+ | gs.info(' | ||
+ | if (loginName.toUpperCase() == firstName.toUpperCase()) { | ||
+ | gs.info(' | ||
+ | } else { | ||
+ | gs.info(' | ||
+ | } | ||
</ | </ | ||
----- | ----- | ||
=====Recursion===== | =====Recursion===== | ||
< | < | ||
+ | // L32S01 - Recursion | ||
+ | // | ||
+ | function factorial(x) { | ||
+ | // TERMINATION | ||
+ | if (x < 0) | ||
+ | return; | ||
+ | |||
+ | // BASE | ||
+ | if (x === 0) | ||
+ | return 1; | ||
+ | |||
+ | // RECURSION | ||
+ | return x * factorial(x - 1); | ||
+ | } | ||
+ | gs.info(factorial(3)); | ||
</ | </ | ||
----- | ----- | ||
=====Classes===== | =====Classes===== | ||
< | < | ||
+ | // L33S01 - Classes, Objects, and Prototypes | ||
+ | // | ||
+ | var person = Class.create(); | ||
+ | person.prototype = { | ||
+ | initialize: function() { | ||
+ | this.firstName = ''; | ||
+ | this.lastName | ||
+ | }, | ||
+ | |||
+ | setFirstName : function(str) { | ||
+ | this.firstName = str; | ||
+ | }, | ||
+ | |||
+ | setLastName : function(str) { | ||
+ | this.lastName = str; | ||
+ | }, | ||
+ | |||
+ | getDisplayName : function() { | ||
+ | return this.firstName + ' ' + this.lastName; | ||
+ | }, | ||
+ | |||
+ | type: person | ||
+ | }; | ||
+ | |||
+ | var me = new person(); | ||
+ | me.setFirstName(' | ||
+ | me.setLastName(' | ||
+ | gs.info(' | ||
+ | var name = me.getDisplayName(); | ||
+ | gs.info(name); | ||
+ | </ | ||
+ | < | ||
+ | // | ||
+ | // L33S02 - Initialize values | ||
+ | // | ||
+ | var person = Class.create(); | ||
+ | person.prototype = { | ||
+ | initialize: function(str1, | ||
+ | this.firstName = str1; | ||
+ | this.lastName | ||
+ | }, | ||
+ | |||
+ | setFirstName : function(str) { | ||
+ | this.firstName = str; | ||
+ | }, | ||
+ | |||
+ | setLastName : function(str) { | ||
+ | this.lastName = str; | ||
+ | }, | ||
+ | |||
+ | getDisplayName : function() { | ||
+ | return this.firstName + ' ' + this.lastName; | ||
+ | }, | ||
+ | |||
+ | type: ' | ||
+ | }; | ||
+ | |||
+ | var me = new person(' | ||
+ | var name = me.getDisplayName(); | ||
+ | gs.info(name); | ||
+ | me.setFirstName(' | ||
+ | me.setLastName(' | ||
+ | gs.info(me.getDisplayName()); | ||
</ | </ | ||
----- | ----- | ||
=====Passing Objects to Functions===== | =====Passing Objects to Functions===== | ||
< | < | ||
+ | // L34S01 - Passing objects to functions | ||
+ | // | ||
+ | var item = Class.create(); | ||
+ | item.prototype = { | ||
+ | initialize: function() { | ||
+ | }, | ||
+ | debugObject : function(obj) { | ||
+ | |||
+ | gs.info(' | ||
+ | }, | ||
+ | |||
+ | type: ' | ||
+ | }; | ||
+ | |||
+ | var myObj = { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }; | ||
+ | var myItem = new item(); | ||
+ | myItem.debugObject(myObj); | ||
</ | </ | ||
----- | ----- | ||
=====Class Inheritence===== | =====Class Inheritence===== | ||
< | < | ||
+ | // L35S01 - Inheritance | ||
+ | // | ||
+ | var vehicle = Class.create(); | ||
+ | vehicle.prototype = { | ||
+ | initialize: function(year, | ||
+ | this.make = make; | ||
+ | this.model = model; | ||
+ | this.year = year; | ||
+ | }, | ||
+ | register : function() { | ||
+ | gs.info(this.getDisplayName() + ' registered!' | ||
+ | }, | ||
+ | |||
+ | info : function() { | ||
+ | gs.info(' | ||
+ | }, | ||
+ | |||
+ | getDisplayName : function() { | ||
+ | |||
+ | return this.year + ' ' + this.make + ' ' + this.model; | ||
+ | |||
+ | }, | ||
+ | |||
+ | type: ' | ||
+ | }; | ||
+ | |||
+ | var car = Class.create(); | ||
+ | car.prototype = Object.extendsObject(vehicle, | ||
+ | |||
+ | findDealer : function() { | ||
+ | gs.info(' | ||
+ | }, | ||
+ | |||
+ | info : function() { | ||
+ | gs.info(' | ||
+ | }, | ||
+ | |||
+ | type: ' | ||
+ | }); | ||
+ | |||
+ | var v1 = new vehicle(' | ||
+ | v1.register(); | ||
+ | v1.info(); | ||
+ | |||
+ | var v2 = new car(' | ||
+ | v2.register(); | ||
+ | v2.findDealer(); | ||
+ | v2.info(); | ||
</ | </ | ||
----- | ----- | ||
=====Scripted REST API===== | =====Scripted REST API===== | ||
< | < | ||
+ | // L36S01 - Simple scripted REST API (GET) resource | ||
+ | // | ||
+ | (function process(/ | ||
+ | |||
+ | return " | ||
+ | | ||
+ | })(request, response); | ||
+ | </ | ||
+ | < | ||
+ | // L36S02 - Scripted REST API with query parameters | ||
+ | // | ||
+ | (function process(/ | ||
+ | |||
+ | // Example Query parameters | ||
+ | // https://< | ||
+ | var queryParams | ||
+ | var isActiveQuery = queryParams.active; | ||
+ | var nameQueryVal | ||
+ | |||
+ | var answer = " | ||
+ | |||
+ | return answer; | ||
+ | | ||
+ | })(request, response); | ||
+ | </ | ||
+ | < | ||
+ | // L36S03 - Scripted REST API with path parameters | ||
+ | // | ||
+ | (function process(/ | ||
+ | |||
+ | // Example path parameters | ||
+ | // https:// | ||
+ | // https:// | ||
+ | var pathParams = request.pathParams; | ||
+ | var tableName | ||
+ | var id = pathParams.id; | ||
+ | |||
+ | var answer = " | ||
+ | |||
+ | return answer; | ||
+ | | ||
+ | })(request, response); | ||
+ | </ | ||
+ | < | ||
+ | // L36S04 - Scripted REST API (POST) with request body payload | ||
+ | // | ||
+ | (function process(/ | ||
+ | |||
+ | var name = request.body.data.name; | ||
+ | var id = request.body.data.id; | ||
+ | var color = request.body.data.color; | ||
+ | | ||
+ | var answer = " | ||
+ | |||
+ | return answer; | ||
+ | | ||
+ | })(request, response); | ||
+ | </ | ||
+ | < | ||
+ | // L36S05 - Scripted REST API with POST and response | ||
+ | // | ||
+ | (function process(/ | ||
+ | |||
+ | var name = request.body.data.name; | ||
+ | var id = request.body.data.id; | ||
+ | var color = request.body.data.color; | ||
+ | | ||
+ | // Do some processing here | ||
+ | | ||
+ | var answer = {}; | ||
+ | answer.status = " | ||
+ | answer.author = " | ||
+ | answer.item = {" | ||
+ | answer.active = true; | ||
+ | response.setBody(answer); | ||
+ | return response; | ||
+ | | ||
+ | })(request, response); | ||
</ | </ | ||
----- | ----- |
start.1708366417.txt.gz · Last modified: 2024/02/19 10:13 by johnsonjohn