Column

Access and manage board columns via the client.column resource.

What are Columns?

Columns define the structure of your board and the types of information you can track for each item (e.g., status, dates, people, text).

Methods

query

Retrieves columns for boards.

client.column.query(args: {}, select: DEFAULT_SELECT)

Parameters:

Name Type Default Description
args Hash {} Query arguments (see boards query)
select Array ["id", "title", "description"] Fields to retrieve

Returns: Monday::Response

Common args:

  • ids - Array of board IDs

Response Structure:

Columns are nested under boards:

boards = response.body.dig("data", "boards")
columns = boards.first&.dig("columns") || []

Example:

response = client.column.query(
  args: { ids: [1234567890] }
)

if response.success?
  boards = response.body.dig("data", "boards")
  columns = boards.first&.dig("columns") || []

  puts "Found #{columns.length} columns"
  columns.each do |column|
    puts "  • #{column['title']}: '#{column['id']}' (#{column['type']})"
  end
end

GraphQL: query { boards { columns { ... } } }

See: monday.com columns query

create

Creates a new column on a board.

client.column.create(args: {}, select: DEFAULT_SELECT)

Parameters:

Name Type Default Description
args Hash {} Creation arguments (required)
select Array ["id", "title", "description"] Fields to retrieve

Required args:

  • board_id - Integer - Board ID
  • title - String - Column title
  • column_type - Symbol - Column type

Optional args:

  • description - String - Column description
  • defaults - String (JSON) - Default column settings

Returns: Monday::Response

Available Column Types:

  • :text - Short text
  • :long_text - Long text with formatting
  • :color - Status with labels
  • :date - Date and time
  • :people - Person or team
  • :numbers - Numeric values
  • :timeline - Date range
  • :dropdown - Dropdown selection
  • :email - Email address
  • :phone - Phone number
  • :link - URL
  • :checkbox - Checkbox
  • :rating - Star rating
  • :hour - Time tracking
  • :week - Week selector
  • :country - Country selector
  • :file - File attachment
  • :location - Geographic location
  • :tag - Tags

Example:

response = client.column.create(
  args: {
    board_id: 1234567890,
    title: "Priority",
    column_type: :color,
    description: "Task priority level"
  }
)

if response.success?
  column = response.body.dig("data", "create_column")
  puts "Created: #{column['title']} (ID: #{column['id']})"
end

GraphQL: mutation { create_column { ... } }

See: monday.com create_column

change_value

Updates a column value for a specific item.

client.column.change_value(args: {}, select: ["id", "name"])

Parameters:

Name Type Default Description
args Hash {} Update arguments (required)
select Array ["id", "name"] Item fields to retrieve

Required args:

  • board_id - Integer - Board ID
  • item_id - Integer - Item ID
  • column_id - String - Column ID
  • value - String (JSON) - New column value

Optional args:

  • create_labels_if_missing - Boolean - Auto-create status labels

Returns: Monday::Response

Example:

require "json"

response = client.column.change_value(
  args: {
    board_id: 1234567890,
    item_id: 987654321,
    column_id: "status",
    value: JSON.generate({ label: "Done" })
  }
)

if response.success?
  item = response.body.dig("data", "change_column_value")
  puts "Updated: #{item['name']}"
end

GraphQL: mutation { change_column_value { ... } }

See: monday.com change_column_value

change_simple_value

Updates a simple column value (text, numbers).

client.column.change_simple_value(args: {}, select: ["id", "name"])

Parameters:

Name Type Default Description
args Hash {} Update arguments (required)
select Array ["id", "name"] Item fields to retrieve

Required args:

  • board_id - Integer - Board ID
  • item_id - Integer - Item ID
  • column_id - String - Column ID
  • value - String - New value

Returns: Monday::Response

Example:

response = client.column.change_simple_value(
  args: {
    board_id: 1234567890,
    item_id: 987654321,
    column_id: "text",
    value: "Updated text content"
  }
)

if response.success?
  item = response.body.dig("data", "change_simple_column_value")
  puts "Updated: #{item['name']}"
end

GraphQL: mutation { change_simple_column_value { ... } }

See: monday.com change_simple_column_value

change_multiple_values

Updates multiple column values for an item at once.

client.column.change_multiple_values(args: {}, select: ["id", "name"])

Parameters:

Name Type Default Description
args Hash {} Update arguments (required)
select Array ["id", "name"] Item fields to retrieve

Required args:

  • board_id - Integer - Board ID
  • item_id - Integer - Item ID
  • column_values - String (JSON) - Hash of column values

Optional args:

  • create_labels_if_missing - Boolean - Auto-create status labels

Returns: Monday::Response

Example:

require "json"

column_values = {
  status: { label: "Working on it" },
  text: "High priority",
  numbers: 85
}

response = client.column.change_multiple_values(
  args: {
    board_id: 1234567890,
    item_id: 987654321,
    column_values: JSON.generate(column_values)
  }
)

if response.success?
  item = response.body.dig("data", "change_multiple_column_values")
  puts "Updated multiple columns for: #{item['name']}"
end

GraphQL: mutation { change_multiple_column_values { ... } }

See: monday.com change_multiple_column_values

change_title

Updates a column’s title.

client.column.change_title(args: {}, select: DEFAULT_SELECT)

Parameters:

Name Type Default Description
args Hash {} Update arguments (required)
select Array ["id", "title", "description"] Fields to retrieve

Required args:

  • board_id - Integer - Board ID
  • column_id - String - Column ID
  • title - String - New title

Returns: Monday::Response

Example:

response = client.column.change_title(
  args: {
    board_id: 1234567890,
    column_id: "text_1",
    title: "Project Notes"
  }
)

if response.success?
  column = response.body.dig("data", "change_column_title")
  puts "Renamed to: #{column['title']}"
end

GraphQL: mutation { change_column_title { ... } }

See: monday.com change_column_title

change_metadata

Updates column metadata (settings, description).

client.column.change_metadata(args: {}, select: DEFAULT_SELECT)

Parameters:

Name Type Default Description
args Hash {} Update arguments (required)
select Array ["id", "title", "description"] Fields to retrieve

Required args:

  • board_id - Integer - Board ID
  • column_id - String - Column ID
  • column_property - String - Property to update (e.g., “description”, “labels”)
  • value - String - New value (JSON for complex properties)

Returns: Monday::Response

Example:

response = client.column.change_metadata(
  args: {
    board_id: 1234567890,
    column_id: "status",
    column_property: "description",
    value: "Current task status"
  }
)

if response.success?
  column = response.body.dig("data", "change_column_metadata")
  puts "Metadata updated for: #{column['title']}"
end

GraphQL: mutation { change_column_metadata { ... } }

See: monday.com change_column_metadata

delete

Deletes a column from a board.

client.column.delete(board_id, column_id, select: ["id"])

Parameters:

Name Type Default Description
board_id Integer - Board ID (required)
column_id String - Column ID to delete (required)
select Array ["id"] Fields to retrieve

Returns: Monday::Response

Example:

response = client.column.delete(1234567890, "text_1")

if response.success?
  column = response.body.dig("data", "delete_column")
  puts "Deleted column ID: #{column['id']}"
end

GraphQL: mutation { delete_column { ... } }

See: monday.com delete_column

column_values (Deprecated)

Response Structure

All methods return a Monday::Response object. Access data using:

response.success?  # => true/false
response.status    # => 200
response.body      # => Hash with GraphQL response

Typical Response Pattern

response = client.column.create(
  args: {
    board_id: 1234567890,
    title: "Status",
    column_type: :color
  }
)

if response.success?
  column = response.body.dig("data", "create_column")
  # Work with column
else
  # Handle error
end

Constants

DEFAULT_SELECT

Default fields returned by most column methods:

"id", "title", "description"

Error Handling

Common errors when working with columns:

  • Monday::AuthorizationError - Invalid or missing API token
  • Monday::InvalidRequestError - Invalid board ID or column ID
  • Monday::Error - Invalid column type, invalid field, or other API errors

Example:

begin
  response = client.column.create(
    args: {
      board_id: 123,  # Invalid ID
      title: "Test",
      column_type: :text
    }
  )
rescue Monday::InvalidRequestError => e
  puts "Error: #{e.message}"
end

See the Error Handling guide for more details.

Column Value Formats

Different column types require different value formats:

Status (Color)

# or
{ index: 1 }

Date

# or
{ date: "2024-12-31", time: "14:30:00" }

People

{
  personsAndTeams: [
    { id: 12345678, kind: "person" }
  ]
}

Timeline

Email

Checkbox

See the Update Column Values guide for complete examples of all column types.

External References

Edit this page
Last updated