Script Settings
Documentation for script settings and configuration using input.config()
The input.config()
method allows you to define settings and inputs for your NocoDB script, creating a configuration form that appears when users run the script. This feature enables you to create reusable, configurable scripts with a friendly user interface.
Overview
When you use input.config()
at the beginning of your script, NocoDB generates a settings form based on your configuration. This form is displayed to users before the script runs, allowing them to:
- Enter text values
- Select options from dropdowns
- Choose tables, views, and fields
- Provide numeric inputs
- Configure other script-specific settings
The values entered by users are returned as an object that you can use throughout 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 the following properties:
Property | Type | Description |
---|---|---|
title | string | Title of the script, displayed 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 provides several methods for creating different types of configuration items:
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 setting
Example:
input.config.table('contactsTable', {
label: 'Contacts Table',
description: 'Select the table containing your contacts'
})
input.config.view()
Creates a view selector in the settings form (requires a parentTable to be defined 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 setting
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
})
input.config.field()
Creates a field selector in the settings form (requires a parentTable to be defined 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 setting
Example:
input.config.field('emailField', {
label: 'Email Field',
description: 'Select the field containing email addresses',
parentTable: 'contactsTable' // References a previously defined table setting
})
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 setting
Example:
input.config.text('emailSubject', {
label: 'Email Subject',
description: 'Subject line for the email notification'
})
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 dropdown
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' }
]
})
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 setting
Example:
input.config.number('daysAhead', {
label: 'Days Ahead',
description: 'Number of days to look ahead in the schedule'
})
Best Practices
-
Order matters - Place related items together, and make sure dependent fields (like views or fields that depend on a table selection) appear after their parent items.
-
Provide clear labels and descriptions - Use descriptive labels and helpful descriptions to guide users in making the right choices.
-
Use select inputs for constrained choices - When there's a fixed set of options, use
input.config.select()
rather than free-form text input. -
Validate configuration - Check that all required configuration values are present and valid before proceeding with your script.
-
Keep it simple - Don't overwhelm users with too many options. Focus on the essential configuration needed for your script.
-
Test with different configurations - Make sure your script works correctly with various combinations of settings.
Limitations
-
Limited input types - Only the input types described above are supported. For more complex inputs, you may need to use the interactive
input
methods after the script starts. -
Order dependency - When using dependent fields (like a view that depends on a table), the parent must be defined first.