Skip to content

Instantly share code, notes, and snippets.

@Guichaguri
Last active July 17, 2024 15:12
Show Gist options
  • Save Guichaguri/83a6d8ab6ce3a695dc104bb4eff9d73d to your computer and use it in GitHub Desktop.
Save Guichaguri/83a6d8ab6ce3a695dc104bb4eff9d73d to your computer and use it in GitHub Desktop.
Power BI Monday.com Query - Power Query M
// Queries Monday.com items from a specific board. Limits to 500 items.
// Tested in API version 2024-01
// Created by Guilherme Chaguri
// Replace the API Key and Board ID for it to work
// In Power BI: "Get Data" -> "Blank Query" -> Right click the "Query" in the left panel and open the "Advanced Editor" -> Paste this code
let
Key = "YOUR MONDAY API KEY",
Board = "YOUR MONDAY BOARD ID NUMBER",
Source = Web.Contents(
"https://api.monday.com/v2",
[
Headers=[
#"Method"="POST",
#"Content-Type"="application/json",
#"Authorization"="Bearer " & Key,
#"API-Version"="2024-01"
],
Content=Text.ToBinary("{""query"": ""query { boards(ids: " & Board & ") { items_page(limit: 500) { items { name, updated_at, group { title }, columns: column_values { column { title }, text, ...on DependencyValue { display_value }, ...on MirrorValue { display_value }, ...on BoardRelationValue { display_value } } } } } }""}")
]
),
Data = Table.FromList(Json.Document(Source)[data][boards]{0}[items_page][items], Record.FieldValues, {"Title", "UpdatedAt", "Group", "Columns"}),
#"Monday" = Table.FromRecords(Table.TransformRows(Data, each
List.Accumulate([Columns], [
Title = [Title],
UpdateDate = [UpdatedAt],
Group = [Group][title]
], (state, current) => Record.AddField(
state, current[column][title],
if Record.HasFields(current, "display_value") then current[display_value] ?? current[text] else current[text])
)
))
in
#"Monday"
@stevenromanous
Copy link

The thing with creating multiple tables is Power BI is that, I would need to constantly go in there and create new tables for new Monday.com projects. Not sustainable

I will try mirroring columns to see if that works, thanks for your guidance!

@tay5689
Copy link

tay5689 commented May 3, 2024

This really works, but, how can I use the code to extract subitens?

@rvmeireles
Copy link

How can I extract more than 500 items and extract the subitems too??

@Barbieri-tic
Copy link

Hi, is anyone having the same problem with credentials? Do you have any suggestions to solve the problem?
311786828-07896128-363d-43cd-848d-527888815f90

@dmalheiro84
Copy link

Hello everybody,
I use this queries to extract all my items and subitems data.
Now I want to extract all board activity log data.
I know that we must query the board for "activity_logs" instead of "items". Does anyone already made it and set up the function for this?
Thanks in advance.
KR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment