|
| 1 | +// Create catalog requests programmatically using CartJS API |
| 2 | +// Tested in background script on dev instance - successfully created REQ records |
| 3 | +// Works for automation workflows and bulk operations |
| 4 | + |
| 5 | +function createCatalogRequest(catalogItemSysId, requestedFor, requestData) { |
| 6 | + var cart = new sn_sc.CartJS(); |
| 7 | + |
| 8 | + var item = { |
| 9 | + "sysparm_id": catalogItemSysId, |
| 10 | + "sysparm_quantity": "1", |
| 11 | + "variables": requestData |
| 12 | + }; |
| 13 | + |
| 14 | + cart.addToCart(item); |
| 15 | + var result = cart.checkoutCart(); |
| 16 | + |
| 17 | + return { |
| 18 | + request_id: result.request_id, |
| 19 | + request_number: result.request_number |
| 20 | + }; |
| 21 | +} |
| 22 | + |
| 23 | +// Basic usage example |
| 24 | +var catalogItem = 'YOUR_CATALOG_ITEM_SYS_ID'; |
| 25 | +var user = gs.getUserID(); |
| 26 | +var data = { |
| 27 | + "short_description": "Automated request" |
| 28 | +}; |
| 29 | + |
| 30 | +var req = createCatalogRequest(catalogItem, user, data); |
| 31 | +gs.info('Created: ' + req.request_number); |
| 32 | + |
| 33 | +// Example with CI reference |
| 34 | +var req = createCatalogRequest(catalogItem, current.assigned_to, { |
| 35 | + "configuration_item": current.sys_id, |
| 36 | + "short_description": "Request for " + current.name |
| 37 | +}); |
| 38 | + |
| 39 | +// Get the generated task if needed |
| 40 | +var req = createCatalogRequest(catalogItem, user, data); |
| 41 | +if (req.request_id) { |
| 42 | + var gr = new GlideRecord('sc_task'); |
| 43 | + gr.addQuery('request', req.request_id); |
| 44 | + gr.query(); |
| 45 | + if (gr.next()) { |
| 46 | + gs.info('Task: ' + gr.number); |
| 47 | + } |
| 48 | +} |
0 commit comments