Function thinklet

The Function thinklet enables custom data transformations and computations using JavaScript. While built-in thinklets handle most tasks, the Function thinklet provides flexibility for complex data manipulation and workflow logic.

How it works

Add JavaScript code to the Function thinklet to transform data, generate insights, and automate workflow decisions.

Use cases

Use the Function thinklet for:

  • Data transformation – Convert values, format data, and compute new metrics.

  • Time calculations – Determine time differences and track durations.

  • Decision automation – Use computed outputs to drive conditional workflow logic.

Restrictions

To ensure performance, security, and predictability, the Function thinklet enforces the following rules:

  • The Function thinklet runs in a secure and isolated environment. It cannot make HTTP requests, access external services or APIs, or interact with any system outside the workflow. This restriction guarantees that execution remains safe, consistent, and compliant with security policies.

  • Function thinklets must complete all logic within 5 seconds. Scripts that exceed this time limit will be automatically terminated. As a result, introducing artificial delays or using the Function thinklet to pause workflow execution is not supported.

Use the Function thinklet exclusively for fast, local data processing and decision-making. For any advanced use cases involving delays or external interactions, consider using purpose-built thinklets.

Configuring the Function thinklet

Generate with AI the JavaScript that defines the Function thinklet. For best results, structure your AI prompt according to the examples on this page.

Simplify third-party integrations by converting raw data into meaningful formats to, for example, calculate the number of days between two dates, without using workarounds or external tools.

  • Name: Enter a unique name for the Function thinklet.

  • ID: The system generates the ID automatically based on the name.

  • Description (optional): Describe the purpose of the thinklet and what it does. This information is useful for others using the workflow who may not be familiar with it.

  • Parameters: Select Add parameter to configure up to 5 thinklet parameters that also become input parameters for the function logic.

    • ID: Define the input parameter ID. Validation logic allows only the characters that are supported by JavaScript.

    • Value: Set the corresponding parameter value—database value, output of another thinklet, global parameter, or custom value.

      • You can select manual custom fieldsuser or device attributes—as parameter values in thinklets to use environment-specific data as input.

  • Outputs: Select Add outputs to configure up to 5 outputs for the function.

    • Name: Enter a unique name for the desired output.

    • ID: The system generates the ID automatically based on the name.

  • JavaScript: Write a JavaScript code that defines the function's logic based on the input parameters. The script should also define any outputs that contain the IDs of defined Outputs.

    • You can Generate with AI the JavaScript for the Function thinklet.

Generating JavaScript with AI for Function thinklets

The system displays the ✦ sparkles icon to indicate AI-generated content or insights. AI is evolving rapidly and delivering great insights, but it can still make mistakes.

To generate with AI the JavaScript that defines the wokflow Function thinklet:

  1. Click the Generate with AI button.

  2. Insert your Prompt request describing input parameters, desired outputs, and required transformations. Refer to prompt examples for more details.

  3. Examine the Explanation and ensure the generated Code follows the appropriate script structure and avoids unsupported syntax.

JavaScript code structure for Function thinklets

When you author a Function thinklet in Nexthink Flow, you should follow these syntax rules to ensure your script works correctly and remains debuggable:

  • Define access input parameters in the configuration using inputs.parameter_ID

  • Assign output values with the syntax outputs.output_ID

  • Include useful information in the Workflow execution timeline for troubleshooting by using nxLogger.log()

// Access input parameters
const param1 = inputs.parameter_ID_1;
const param2 = inputs.parameter_ID_2;
// ...
const paramN = inputs.parameter_ID_5; // Up to 5 parameters

// Logic for transformations

outputs.output_1 = /* your logic here */;
outputs.output_2 = /* your logic here */;
// ...
outputs.output_5 = /* your logic here */;

// Output any results for troubleshooting
nxLogger.log("Name the output" + output_1);
Unsupported functions and objects

The following global functions and objects are not supported:

  • setTimeout

  • setInterval

  • setImmediate

  • clearTimeout

  • clearInterval

  • clearImmediate

  • process

  • require

  • Buffer

  • console

  • process.nextTick

JavaScript Examples for Function thinklets: prompts and codes

Find below examples of JavaScript AI prompting and coding:

Example of Prompt to generate JavaScript with AI
  • Prompt example:

Compute start and end date to be given as an entry for the calendar to search for a meeting slot from now till end of next day that is not weekend (business day), and include only business hours too.

  • Nexthink AI-generated code:

// Get current date and time
const now = new Date();

// Set start date to now
const startDate = now;

// Set end date to end of next business day
const endDate = new Date(now);
endDate.setDate(endDate.getDate() + 1);

// Ensure end date is a business day (not weekend)
while (endDate.getDay() === 0 || endDate.getDay() === 6) {
  endDate.setDate(endDate.getDate() + 1);
}

// Set end time to 17:00 (end of business hours)
endDate.setHours(17, 0, 0, 0);

// Format dates for calendar entry
const formatDate = (date) => {
  return date.toISOString().replace(/\.\d{3}Z$/, 'Z');
};

// Set output
outputs.days_left = Math.ceil((endDate - startDate) / (1000 * 60 * 60 * 24));
outputs.if_expired = false; // Not applicable in this context

// Log the start and end dates
nxLogger.log(`Start date: ${formatDate(startDate)}`);
nxLogger.log(`End date: ${formatDate(endDate)}`);

Use case: Password expiration checker within a Function thinklet

This code example shows how to implement a password expiration checker within a Function thinklet.

// Access input parameter
const lastUpdate = inputs.last_update_date;
 
// Define password validity period (90 days)
const validityDays = 90;
const expirationDate = new Date(lastUpdate);
expirationDate.setDate(expirationDate.getDate() + validityDays);
 
// Get current date
const now = new Date();
 
// Calculate days left
const timeDiff = expirationDate - now;
const daysLeft = Math.ceil(timeDiff / (1000 * 60 * 60 * 24));
 
// Set outputs 
outputs.days_left = daysLeft;                  // Days_to_change_password
outputs.if_expired = daysLeft <= 0;             // Already_expired
 
// Output intermediate results for troubleshooting
nxLogger.log("Days left: " + daysLeft);
nxLogger.log("Need to notify: " + outputs.output_2);

Last updated

Was this helpful?