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:

PropertyTypeDescription
titlestringTitle of the script, shown at the top of the settings form
descriptionstringDescription of what the script does (supports some markdown)
itemsArray<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 setting
  • options (optional): Object with additional options:
    • label (string): Display label for the setting
    • description (string): Description text explaining the setting
    • default (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 setting
  • options: Object with the following properties:
    • label (string): Display label for the setting
    • description (string): Description text explaining the setting
    • parentTable (string): The key of a previously defined table setting
    • default (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 setting
  • options: Object with the following properties:
    • label (string): Display label for the setting
    • description (string): Description text explaining the setting
    • parentTable (string): The key of a previously defined table setting
    • default (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 setting
  • options (optional): Object with additional options:
    • label (string): Display label for the setting
    • description (string): Description text explaining the setting
    • default (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 setting
  • options: Object with the following properties:
    • label (string): Display label for the setting
    • description (string): Description text explaining the setting
    • options (Array<{value: string, label?: string}>): Array of options for the dropdown
    • default (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 setting
  • options (optional): Object with additional options:
    • label (string): Display label for the setting
    • description (string): Description text explaining the setting
    • default (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

  1. 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.

  2. Provide clear labels and descriptions: Use descriptive labels and helpful descriptions. They help users make the right choices.

  3. Use select inputs for constrained choices: If there is a fixed set of options, use input.config.select(), not free-form text input.

  4. Validate configuration: Before the script continues, make sure that all required configuration values are present and valid.

  5. Keep it simple: Do not give users too many options. Give only the configuration that your script needs.

  6. Test with different configurations: Make sure that your script works correctly with different combinations of settings.

Limitations

  1. Limited input types: Only the input types on this page are supported. For more complex inputs, use the interactive input methods after the script starts.

  2. Order dependency: For a dependent field, define the parent first. For example, a view depends on a table.

Last updated on

Latest product updates?See Changelog
Stay in the loop? Follow us onLinkedInLinkedInYouTubeYouTubeXX