Skip to content

Columns

You'll find below all the available methods to interact with the columns of a SeaTable table.

Global structure

Here is the global structure of a column object:

{
    "key":"bjcM",
    "type":"number",
    "name":"Val",
    "editable":true,
    "width":200,
    "resizable":true,
    "draggable":true,
    "data": // (1)!
        {
            "format":"number",
            "precision":2,
            "enable_precision":false,
            "enable_fill_default_value":false,
            "enable_check_format":false,
            "decimal":"comma",
            "thousands":"no",
            "format_min_value":0,
            "format_max_value":1000
        },
    "permission_type":"",
    "permitted_users":[],
    "permitted_group":[],
    "edit_metadata_permission_type":"",
    "edit_metadata_permitted_users":[],
    "edit_metadata_permitted_group":[],
    "description":null,
    "colorbys":{},
    "editor":
        {
            "key":null,
            "ref":null,
            "props":{},
            "_owner":null
        },
    "formatter":
        {
            "key":null,
            "ref":null,
            "props":{},
            "_owner":null
        }
}
  1. See below for a presentation of data object keys depending on the column type

Columns particularities

  • Unless other elements, columns don't have an _id, but a key
  • Link-type columns also have a link id that should not be mistaken with the column key. This value is present in the data object (see below)

Column data

The data object keys will depend on the column type and will allow you to define the specific column parameters. Here is a list of the different data keys depending on the column type:

text, email, long-text, image, file, url, creator, ctime, last-modifier, mtime

empty

link
{
    "display_column_key":"qqXZ",
    "table_id":"0000",
    "other_table_id":"XE5U",
    "is_internal_link":true,
    "is_multiple":true,
    "only_adding_new_record":false,
    "is_row_from_view":false,
    "other_view_id":"",
    "link_id":"OSD1",
    "array_type":"text",
    "array_data":null,
    "result_type":"array"
}
number
{
    "format":"custom_currency",
    "precision":2,
    "enable_precision":true,
    "enable_fill_default_value":false,
    "decimal":"comma",
    "thousands":"no",
    "currency_symbol_position":"after",
    "currency_symbol":"p"
}
date
{
    "format":"M/D/YYYY HH:mm"
}
duration
{
    "format":"duration",
    "duration_format":"h:mm"
}
single select, multiple select
{
    "options":
        [
            {
                "name":"Male",
                "id":"783482",
                "color":"#46A1FD",
                "textColor":"#FFFFFF",
                "borderColor":"#3C8FE4"
            },
            {
                "name":"Female",
                "id":"330935",
                "color":"#DC82D2",
                "textColor":"#FFFFFF",
                "borderColor":"#D166C5"
            },
            {
                "name":"Non-binary",
                "id":"147140",
                "color":"#ADDF84",
                "textColor":"#FFFFFF",
                "borderColor":"#9CCF72"
            }
        ],
        "cascade_column_key":"Qvkt",
        "cascade_settings":
            {
                "147140":["783482"],
                "330935":["330935"],
                "783482":["783482"]
            }
}
checkbox
{
    "default_value":false,
    "enable_fill_default_value":false
}
rate
{
    "rate_max_number":5,
    "rate_style_color":"#FF8000",
    "default_value":"",
    "enable_fill_default_value":false
}
formula
{
    "formula":"left({Email},search(\"@\",{Email},1)-1)",
    "operated_columns":["JfP2"],
    "result_type":"string",
    "enable_precision":true,
    "precision":1,
    "thousands":"no"
}
link-formula
{
    "formula":"findmax",
    "result_type":"array",
    "operated_columns":["TaXD"],
    "conditions":[],
    "link_column_key":"TaXD",
    "include_condition":false,
    "condition_conjunction":"And",
    "column_key_in_linked_record":"0000",
    "column_key_for_comparison":"RSjx",
    "level2_linked_table_column_key":null,
    "array_type":"auto-number",
    "array_data":null
}
geolocation
{
    "geo_format":"lng_lat"
}
auto-number
{
    "format":"YYYYMMDD-00",
    "max_used_auto_number":33,
    "digits":2,
    "prefix_type":"date",
    "prefix":"20250909"
}
button
{
    "button_type":"copy_row_to_another_table",
    "button_name":"Copy to Table2",
    "button_color":"#FFFCB5",
    "table_id":"0000"
}

Accessing a particular data object value

This rather long list is not exhaustive, however. If you need to access a specific data value, consult the SeaTable API Reference or create the corresponding column to display the content of its data object.

Get Column(s)

getColumnByName

Get the column object of a particular table, specified by the column name.

base.getColumnByName(table: Object/String/* (1)! */, name: String);
  1. table: either a table object or the table name

Output Single column object (undefined if column name doesn't exist)

Example

const table  = base.getTableByName('Table1');
const column = base.getColumnByName(table, 'Column name');
output.text(column.name);

const column = base.getColumnByName('Table1', 'Column name');

getColumns

Get all the columns of a specific table.

base.getColumns(table: Object/String/* (1)! */);
  1. table: either a table object or the table name

Output Array of column objects (throws an error if table doesn't exist)

Example

const table  = base.getTableByName('Table1');
const columns = base.getColumns(table);

columns.forEach((column) => {
    output.text(column.name);
})

const columns = base.getColumns('Table1');

listColumns

Get the columns of a table (specified by its name tableName), optionally from a specific view (specified by its name viewName). If viewName is not set, all columns of the table will be returned (equivalent, in this case, to base.getColumns).

base.listColumns(tableName: String, viewName: String);

Output Array of column objects (throws an error if table doesn't exist)

Example

const tableName  = 'Table1'
const viewName = 'Default View'
const columns = base.listColumns(tableName, viewName);

columns.forEach((column) => {
    output.text(column.name);
})

const columns = base.listColumns('Table1');

getShownColumns

Get all the columns of a table displayed in a specific view (hidden columns are not returned).

base.getShownColumns(table: Object/String, view: Object/String/* (1)! */);
  1. table: either a table object or the table name

    view (required): either a view object or the view name

Output Array of column objects (throws an error if table or view doesn't exist)

Example

const table  = base.getTableByName('Table1');
const view = base.getViewByName(table, 'Default View');
const columns = base.getShownColumns(table, view);
columns.forEach((column) => {
    output.text(column.name);
})

const columns = base.getShownColumns('Table1', 'Default View');

getColumnsByType

Get all the columns of a specific type in a table.

base.getColumnsByType(table: Object/String, type: String /* (1)! */);
  1. table: either a table object or the table name

    type (required): the type of the column (see the API Reference for supported types)

Output Array of column objects (empty array if no corresponding columns or wrong type)

Example

const table  = base.getTableByName('Table1');
const columns = base.getColumnsByType(table, 'text');
output.text(columns.length);

const columns = base.getColumnsByType('Table1', 'text');
output.text(columns.length);