dude trust me, do pip install monday in the terminal
then do from monday import MondayClient
this is going to save you so much time
GitHub - ProdPerfect/monday: Python client for Monday.com documentation here
What do you mean it doesn’t return all the values of a column? Can you show the example?
You can use the library I shared above to get the column id (or through enabling dev mode and getting the col_id), then use a different function with the column id to fetch from that specific function
Here’s a snippet
client = MondayClient(apiKey)
ret = client .boards.fetch_columns_by_board_id(board_id) # you also have to know the board id which is in the url
##Parse ret 'data']t'boards']d0]]'columns'] for the column id
ret=mPT.boards.fetch_items_by_board_id(1684237949)
#now parse ret using the column id for the col values you are looking for, you can use list comprehension here for example
arr = client.boards.fetch_items_by_board_id(board)
names = sitemi'name'] for item in item for item in arr 'data']t'boards']d0]]"items"]]]
#will give you the names of the items, play with it a bit
This works alright, but when I try to pull specific column values (especially numbers) things don’t seem to work.
For example:
arr = client.boards.fetch_items_by_board_id(2885491262)
names = =iteme'name'] for item in nitem for item in arrr'data']''boards']'0]0"items"]]]
print(names)
# will give you the names of the items, play with it a bit
hours = =iteme'numbers'] for item in nitem for item in arrr'data']''boards']'0]0"items"]"0]0'column_values']'0]0
'value']]]
print(hours)
The return is:
>‘Item 1’, ‘Item 2’, ‘Item 3’, ‘Item 4’, ‘Item 5’]
Traceback (most recent call last):
hours = titemr‘numbers’] for item in item for item in arrm‘data’]e‘boards’]m0]n“items”]d0]a‘column_values’]0]0
TypeError: ‘NoneType’ object is not iterable
For what it’s worth I get similar results when not using the monday module.
hours_sum = 0
column_length = len(resultl'data']''boards']'0]0'items']'0]0'column_values'])
for item in range(len(resultl'data']''boards']'0]0'items'])):
# print(f"Item {item}: {resultl'data']''boards']'0]0'items']'item]m'column_values']}")
for i in range(column_length):
if resultl'data']''boards']'0]0'items']'0]0'column_values']'i]i'id'] in n'numbers', 'item']:
line_result = int(0 if resultl'data']''boards']'0]0'items']'0]0'column_values']'i]i'value'] is None else
resultl'data']''boards']'0]0'items']'0]0'column_values']'i]i'value'])
hours_sum += line_result
print(item, i)
print(resultl'data']''boards']'0]0'items']'0]0'column_values']'i])
print(f'Total Hours Spent: {hours_sum}')
line 56, in
line_result = int(0 if resultl‘data’]t‘boards’]b0]r‘items’]]0]‘column_values’]i]l‘value’] is None else
ValueError: invalid literal for int() with base 10: ‘“1”’
Seems like the number columns return strings and I am having trouble converting them to int.
Is anyone using python with the Monday API to really leverage their workflow? I would love to see what others are doing to make this effective.
Yes, this API feels like an exercise in unpacking JSON. Clearly I am not yet up to the task.
query_columns = """
query {
boards (ids: 2885491262) {
items () {
id
name
column_values {
id
title
value
text
additional_info
}
}
}
}
"""
data = {'query': query_columns}
r = requests.post(url=apiUrl, json=data, headers=headers) # make request
result = r.json()
print(result)
And the output is:
{'data': {'boards': [{'items': [{'id': '2885491305', 'name': 'Item 1', 'column_values': [{'id': 'person', 'title': 'Person', 'value': None, 'text': '', 'additional_info': None}, {'id': 'status', 'title': 'Status', 'value': '{"index":0,"post_id":null,"changed_at":"2019-03-01T17:24:57.321Z"}', 'text': 'Working on it', 'additional_info': '{"label":"Working on it","color":"#fdab3d","changed_at":"2019-03-01T17:24:57.321Z"}'}, {'id': 'date4', 'title': 'Date', 'value': '{"date":"2022-07-03","icon":null,"changed_at":"2022-07-01T13:29:43.829Z"}', 'text': '2022-07-03', 'additional_info': None}, {'id': 'numbers', 'title': 'Hours', 'value': '"1"', 'text': '1', 'additional_info': None}]}, {'id': '2885491315', 'name': 'Item 2', 'column_values': [{'id': 'person', 'title': 'Person', 'value': None, 'text': '', 'additional_info': None}, {'id': 'status', 'title': 'Status', 'value': '{"index":1,"post_id":null,"changed_at":"2019-03-01T17:28:23.178Z"}', 'text': 'Done', 'additional_info': '{"label":"Done","color":"#00c875","changed_at":"2019-03-01T17:28:23.178Z"}'}, {'id': 'date4', 'title': 'Date', 'value': '{"date":"2022-07-01","icon":null,"changed_at":"2022-07-01T13:29:43.426Z"}', 'text': '2022-07-01', 'additional_info': None}, {'id': 'numbers', 'title': 'Hours', 'value': '"2"', 'text': '2', 'additional_info': None}]}, {'id': '2885491325', 'name': 'Item 3', 'column_values': [{'id': 'person', 'title': 'Person', 'value': None, 'text': '', 'additional_info': None}, {'id': 'status', 'title': 'Status', 'value': '{"index":5,"post_id":null,"changed_at":"2019-03-01T17:25:02.248Z"}', 'text': None, 'additional_info': '{"label":null,"color":"#c4c4c4","changed_at":"2019-03-01T17:25:02.248Z"}'}, {'id': 'date4', 'title': 'Date', 'value': '{"date":"2022-07-01","icon":null,"changed_at":"2022-07-01T13:29:42.918Z"}', 'text': '2022-07-01', 'additional_info': None}, {'id': 'numbers', 'title': 'Hours', 'value': '"3"', 'text': '3', 'additional_info': None}]}, {'id': '2885491341', 'name': 'Item 4', 'column_values': [{'id': 'person', 'title': 'Person', 'value': None, 'text': '', 'additional_info': None}, {'id': 'status', 'title': 'Status', 'value': None, 'text': None, 'additional_info': None}, {'id': 'date4', 'title': 'Date', 'value': '{"date":"2022-07-01","icon":null,"changed_at":"2022-07-01T13:29:42.918Z"}', 'text': '2022-07-01', 'additional_info': None}, {'id': 'numbers', 'title': 'Hours', 'value': '"4"', 'text': '4', 'additional_info': None}]}, {'id': '2885491355', 'name': 'Item 5', 'column_values': [{'id': 'person', 'title': 'Person', 'value': None, 'text': '', 'additional_info': None}, {'id': 'status', 'title': 'Status', 'value': None, 'text': None, 'additional_info': None}, {'id': 'date4', 'title': 'Date', 'value': '{"date":"2022-07-01","icon":null,"changed_at":"2022-07-01T13:29:43.426Z"}', 'text': '2022-07-01', 'additional_info': None}, {'id': 'numbers', 'title': 'Hours', 'value': '"5"', 'text': '5', 'additional_info': None}]}]}]}, 'account_id': 9792846}
It seems very odd that my numbers column is returning ‘“1”’.