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
endGraphQL: query { boards { columns { ... } } }
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 IDtitle- String - Column titlecolumn_type- Symbol - Column type
Optional args:
description- String - Column descriptiondefaults- 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']})"
endGraphQL: mutation { 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 IDitem_id- Integer - Item IDcolumn_id- String - Column IDvalue- 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']}"
endGraphQL: 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 IDitem_id- Integer - Item IDcolumn_id- String - Column IDvalue- 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']}"
endGraphQL: 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 IDitem_id- Integer - Item IDcolumn_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']}"
endGraphQL: 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 IDcolumn_id- String - Column IDtitle- 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']}"
endGraphQL: 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 IDcolumn_id- String - Column IDcolumn_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']}"
endGraphQL: 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
Permanent Deletion
Deleting a column removes it and all its data from every item. This cannot be undone.
Example:
response = client.column.delete(1234567890, "text_1")
if response.success?
column = response.body.dig("data", "delete_column")
puts "Deleted column ID: #{column['id']}"
endGraphQL: mutation { delete_column { ... } }
column_values (Deprecated)
Deprecated
This method is deprecated and will be removed in v2.0.0. Use client.item.query with column_values select instead.
Response Structure
All methods return a Monday::Response object. Access data using:
response.success? # => true/false
response.status # => 200
response.body # => Hash with GraphQL responseTypical 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
endConstants
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 tokenMonday::InvalidRequestError- Invalid board ID or column IDMonday::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}"
endSee the Error Handling guide for more details.
Column Value Formats
Different column types require different value formats:
Status (Color)
{ label: "Done" }
# or
{ index: 1 }Date
{ date: "2024-12-31" }
# or
{ date: "2024-12-31", time: "14:30:00" }People
{
personsAndTeams: [
{ id: 12345678, kind: "person" }
]
}Timeline
{ from: "2024-01-01", to: "2024-03-31" }Link
{ url: "https://example.com", text: "Example" }Email
{ email: "user@example.com", text: "Contact" }Checkbox
{ checked: "true" }See the Update Column Values guide for complete examples of all column types.