---
sourceDocument: Xanadu API Reference
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/xanadu/api-reference

 Release :

    - xanadu

ft:locale :

    - en-US

ft:publication_title :

    - Xanadu API Reference

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# SPScriptedFacetService - Scoped

# SPScriptedFacetService - Scoped {#ariaid-title1}

* Release version: Xanadu
* 
* Updated August 1, 2024
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 1 minute to read

Generates a multi-choice or single-choice facets object for an advanced search source.

The SPScriptedFacetService API can only be used in a facet generation
script in a Service Portal search
source. The facet generation script is only visible when Is scripted source is selected.

There is no constructor for this class. Instead, use the createFacet() or
createMultiChoiceFacet() methods to generate a facets object.

## SPScriptedFacetService - createFacet(String label, String id) {#ariaid-title2}

Creates a single choice facets object.
After creating the facets object, add facet items or mapped queries to the facet using the
addFacetItem() method of the SPScriptedFacet class.
{#SPSFServiceScoped-createFacet_S_S__table_apb_rfv_5cb__entry__3}

| Name | Type | Description |
|-|-|-|
| label | String | Label for the facet. |
| id | String | ID for the facet. |
[Table 1. Parameters]

{#SPSFServiceScoped-createFacet_S_S__table_apb_rfv_5cb} {#SPSFServiceScoped-createFacet_S_S__table_bpb_rfv_5cb__entry__2}

| Type | Description |
|-|-|
| Object | Single choice facets object. Returns an error when: * A duplicate label or ID is found. * A label or ID is not defined. {#SPSFServiceScoped-createFacet_S_S__ul_obk_vvw_xcb} |
[Table 2. Returns]

{#SPSFServiceScoped-createFacet_S_S__table_bpb_rfv_5cb}  
Can only be used in a facet generation script in a Service Portal advanced search
source.

    var stateFacet = facetService.createFacet("State", "state");

## SPScriptedFacetService - createMultiChoiceFacet(String label, String id) {#ariaid-title3}

Creates a multi choice facets object.
After creating the facets object, add facet items or mapped queries to the facet using the
addFacetItem() method of the SPScriptedFacet class.
{#SPSFServiceScoped-createMultiSelectFacet_S_S__table_apb_rfv_5cb__entry__3}

| Name | Type | Description |
|-|-|-|
| label | String | Label for the facet. |
| id | String | ID for the facet. |
[Table 3. Parameters]

{#SPSFServiceScoped-createMultiSelectFacet_S_S__table_apb_rfv_5cb} {#SPSFServiceScoped-createMultiSelectFacet_S_S__table_bpb_rfv_5cb__entry__2}

| Type | Description |
|-|-|
| Object | Multi choice facets object. Returns an error when: * A duplicate label or ID is found. * A label or ID is not defined. {#SPSFServiceScoped-createMultiSelectFacet_S_S__ul_obk_vvw_xcb} |
[Table 4. Returns]

{#SPSFServiceScoped-createMultiSelectFacet_S_S__table_bpb_rfv_5cb}  

    function createMultiChoiceFacetFromKB(label, variable, values, orderBy){
      if(!values || values.length == 0)
        return;

      var kbFacet = facetService.createMultiChoiceFacet(label, variable);
      var kbMap = {};
      for(var i in values) {
        var key = values[i].label;
        var value = values[i].id;
        var parent = new KBParentData().getParentCategory(value, key);
        key = parent.join(' > ');
        kbMap[key] = value;
      }

      var labels = Object.keys(kbMap).sort();
      for (i = 0; i < labels.length; i++) {
        var currentLabel = labels[i];
        kbFacet.addFacetItem(currentLabel, kbMap[currentLabel]);
        //adds facet search options for each kbMap entry
      }
    }


