Script Settings
Use the input.config() method to define settings and inputs for your NocoDB script. The method creates a configuration form that users see when they run the script. Use it to make reusable, configurable scripts with a friendly user interface.
Overview
When you use input.config() at the start of your script, NocoDB generates a settings form from your configuration. Users see this form before the script runs. In the form, users can:
- Enter text values
- Select options from dropdowns
- Choose tables, views, and fields
- Provide numeric inputs
- Configure other script-specific settings
The method returns the values that users enter as an object. You can use this object anywhere in your script.
Basic Usage
// Define script settings
const config = input.config({
title: "My Script",
description: "This script processes data based on your configuration.",
items: [
input.config.table('sourceTable', {
label: 'Source Table',
description: 'Select the table containing your source data'
}),
input.config.text('prefix', {
label: 'Record Prefix',
description: 'Prefix to add to processed record names'
}),
input.config.number('limit', {
label: 'Processing Limit',
description: 'Maximum number of records to process'
})
]
});
// Use the configured values
const table = base.getTable(config.sourceTable);
const prefix = config.prefix;
const limit = config.limit;
output.text(`Using table: ${table.name}`);
output.text(`Using prefix: ${prefix}`);
output.text(`Processing limit: ${limit}`);
// Rest of your script...Configuration Options
Main Configuration Object
The input.config() method accepts a configuration object with these properties:
| Property | Type | Description |
|---|---|---|
title | string | Title of the script, shown at the top of the settings form |
description | string | Description of what the script does (supports some markdown) |
items | Array<ConfigItem> | Array of configuration items for the settings form |
Configuration Item Types
The input.config object has a method for each type of configuration item:
input.config.table()
Creates a table selector in the settings form.
Parameters:
key(string): Unique identifier for this settingoptions(optional): Object with additional options:label(string): Display label for the settingdescription(string): Description text explaining the settingdefault(string): Default table ID to pre-select
Example:
input.config.table('contactsTable', {
label: 'Contacts Table',
description: 'Select the table containing your contacts',
default: 'tbl_abc123' // Optional: pre-select a table by ID
})input.config.view()
Creates a view selector in the settings form. You must define a parentTable first.
Parameters:
key(string): Unique identifier for this settingoptions: Object with the following properties:label(string): Display label for the settingdescription(string): Description text explaining the settingparentTable(string): The key of a previously defined table settingdefault(string): Default view ID to pre-select
Example:
input.config.view('activeContactsView', {
label: 'Active Contacts View',
description: 'Select the view containing active contacts only',
parentTable: 'contactsTable', // References a previously defined table setting
default: 'vw_xyz789' // Optional: pre-select a view by ID
})input.config.field()
Creates a field selector in the settings form. You must define a parentTable first.
Parameters:
key(string): Unique identifier for this settingoptions: Object with the following properties:label(string): Display label for the settingdescription(string): Description text explaining the settingparentTable(string): The key of a previously defined table settingdefault(string): Default field ID to pre-select
Example:
input.config.field('emailField', {
label: 'Email Field',
description: 'Select the field containing email addresses',
parentTable: 'contactsTable', // References a previously defined table setting
default: 'fld_email456' // Optional: pre-select a field by ID
})input.config.text()
Creates a text input in the settings form.
Parameters:
key(string): Unique identifier for this settingoptions(optional): Object with additional options:label(string): Display label for the settingdescription(string): Description text explaining the settingdefault(string): Default text value to pre-fill
Example:
input.config.text('emailSubject', {
label: 'Email Subject',
description: 'Subject line for the email notification',
default: 'Weekly Report' // Optional: pre-fill with default text
})input.config.select()
Creates a dropdown select menu in the settings form.
Parameters:
key(string): Unique identifier for this settingoptions: Object with the following properties:label(string): Display label for the settingdescription(string): Description text explaining the settingoptions(Array<{value: string, label?: string}>): Array of options for the dropdowndefault(string): Default option value to pre-select (must be one of the defined option values)
Example:
input.config.select('priority', {
label: 'Task Priority',
description: 'Select the priority level for the tasks',
options: [
{ value: 'high', label: 'High Priority' },
{ value: 'medium', label: 'Medium Priority' },
{ value: 'low', label: 'Low Priority' }
],
default: 'medium' // Optional: pre-select 'Medium Priority'
})input.config.number()
Creates a numeric input in the settings form.
Parameters:
key(string): Unique identifier for this settingoptions(optional): Object with additional options:label(string): Display label for the settingdescription(string): Description text explaining the settingdefault(number): Default number value to pre-fill
Example:
input.config.number('daysAhead', {
label: 'Days Ahead',
description: 'Number of days to look ahead in the schedule',
default: 7 // Optional: pre-fill with default number
})Best Practices
-
Order matters: Put related items together. Make sure that dependent fields come after their parent items. Views and fields that depend on a table selection are dependent fields.
-
Provide clear labels and descriptions: Use descriptive labels and helpful descriptions. They help users make the right choices.
-
Use select inputs for constrained choices: If there is a fixed set of options, use
input.config.select(), not free-form text input. -
Validate configuration: Before the script continues, make sure that all required configuration values are present and valid.
-
Keep it simple: Do not give users too many options. Give only the configuration that your script needs.
-
Test with different configurations: Make sure that your script works correctly with different combinations of settings.
Limitations
-
Limited input types: Only the input types on this page are supported. For more complex inputs, use the interactive
inputmethods after the script starts. -
Order dependency: For a dependent field, define the parent first. For example, a view depends on a table.
Related
Last updated on