--- title: Create scripted filters description: The condition builder alone cannot create some filters, such as displaying a record set that depends on an unrelated table. If you know JavaScript, you can create JavaScript functions for use in advanced filters. locale: en-US canonical_url: https://www.servicenow.com/docs/r/australia/platform-user-interface/t\_ScriptedFilters.html release: australia topic_type: task last_updated: "2026-03-12" reading_time_minutes: 1 breadcrumb: [Filter admin functions, Filters and breadcrumbs, Lists in the classic environment, Working in the classic environment, Working in Core UI, Configure UIs and portals, Configure user experiences] --- # Create scripted filters The condition builder alone cannot create some filters, such as displaying a record set that depends on an unrelated table. If you know JavaScript, you can create JavaScript functions for use in advanced filters. ## Before you begin Role required: admin ## Procedure 1. Create a new script include. 1. Navigate to **All** > **System Definition** > **Script Includes**. 2. Click **New**. 3. Fill out the form, and then select **Submit**. 2. Open the script include and, in the **Script** field, create a JavaScript function that returns an array of `sys_ids`. - Ensure that the function uses the same name as the script include. - Ensure that the script include is **Active** and **Client callable**. 3. Call the JavaScript function from the condition builder. For more information, see GlideRecord queries and Script includes. **Note:** Grouped lists with a script include in the filter may cause slowness. ## Example A company provides intensive care for a group of customers. To track these services, the service manager needs a high-level journal and links to all incidents that the customers raise. The company creates an application, Intensive Care, and a table, \[u\_intensive\_care\]. While the table contains a reference field for the customer name, there is no direct link to the user table. Thus, the manager cannot set up an incident list filter using the condition builder for customers who are under intensive care. The solution is to write a JavaScript function that uses a GlideRecord query to build an array of user sys\_ids in the \[u\_intensive\_care\] table, as shown in the sample code below. Call the function from the condition builder in the Incident table \(**\[Caller\] \[is\] \[javascript:myFunction\(\)\]**\). ``` function myFunction(){ var arrUsers = []; var gr = new GlideRecord('u_intensive_care'); gr.query(); while(gr.next()){ arrUsers.push(gr.u_customer.toString()); } return arrUsers; } ``` **Parent Topic:**[Filter admin functions](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/platform-user-interface/filter-admin-functions.md) **Related topics** [Create and edit filters]() [Delete filters]() [Create a dynamic filter option]()