Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now! Learn more

Reply
Anonymous
Not applicable

Invoked function parameters error (Clockify API)

Hello everyone,

 

I'm trying to use an invoke function but i get an error I don't understand. 

I'm trying to get all the entries of everyone in my company from clockify using a main function and an invoked function. 

 

When I'm trying to pass a dynamic ID using each function, it doesn't work, but when I pass a static ID, it works. 

 

(I replaced my API key by XXXX)

 

GetTimeEntries (Invoked function) 

 

 

 

= (userID as text, PageNumber as number) =>
let
    Source = try Json.Document(Web.Contents("https://api.clockify.me/api/v1//workspaces/63be77bd5e398c3868773063/user/"& userID &"/time-entries?page-size=100&page=" & Number.ToText(PageNumber), [Headers=[#"X-Api-Key"="XXXX"]])) otherwise [description=null, tagIds=null, userId=null, billable=null, taskId=null, projectId=null, timeInterval=null, workspaceId=null, isLocked=null, customFieldValues=null, type=null, kioskId=null]
in
    Source

 

 

 

 

Request "Clockify - users" - static parameters ("63be77bd5e398c3868773062")
expected results : 215 

Results : 215 (with a pagination of 100 we have 3 lists)

OK

But I get 215 lines for each ID , as I pass a static parameter

 

 

 

let
    Source = Json.Document(Web.Contents("https://api.clockify.me/api/v1//workspaces/63be77bd5e398c3868773063/users", [Headers=[#"X-Api-Key"="XXXX"]])),

// Not revelant /////////////////
    #"Converti en table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Column1 développé" = Table.ExpandRecordColumn(#"Converti en table", "Column1", {"id", "email", "name", "memberships", "profilePicture", "activeWorkspace", "defaultWorkspace", "settings", "status", "customFields"}, {"id", "email", "name", "memberships", "profilePicture", "activeWorkspace", "defaultWorkspace", "settings", "status", "customFields"}),
    #"settings développé" = Table.ExpandRecordColumn(#"Column1 développé", "settings", {"weekStart", "timeZone", "timeFormat", "dateFormat", "sendNewsletter", "weeklyUpdates", "longRunning", "scheduledReports", "approval", "pto", "alerts", "reminders", "timeTrackingManual", "summaryReportSettings", "isCompactViewOn", "dashboardSelection", "dashboardViewType", "dashboardPinToTop", "projectListCollapse", "collapseAllProjectLists", "groupSimilarEntriesDisabled", "myStartOfDay", "projectPickerTaskFilter", "lang", "multiFactorEnabled", "theme", "scheduling", "onboarding", "showOnlyWorkingDays"}, {"settings.weekStart", "settings.timeZone", "settings.timeFormat", "settings.dateFormat", "settings.sendNewsletter", "settings.weeklyUpdates", "settings.longRunning", "settings.scheduledReports", "settings.approval", "settings.pto", "settings.alerts", "settings.reminders", "settings.timeTrackingManual", "settings.summaryReportSettings", "settings.isCompactViewOn", "settings.dashboardSelection", "settings.dashboardViewType", "settings.dashboardPinToTop", "settings.projectListCollapse", "settings.collapseAllProjectLists", "settings.groupSimilarEntriesDisabled", "settings.myStartOfDay", "settings.projectPickerTaskFilter", "settings.lang", "settings.multiFactorEnabled", "settings.theme", "settings.scheduling", "settings.onboarding", "settings.showOnlyWorkingDays"}),
    #"Colonnes supprimées1" = Table.RemoveColumns(#"settings développé",{"memberships", "profilePicture", "activeWorkspace", "defaultWorkspace", "settings.weekStart", "settings.timeZone", "settings.timeFormat", "settings.dateFormat", "settings.sendNewsletter", "settings.weeklyUpdates", "settings.longRunning", "settings.scheduledReports", "settings.approval", "settings.pto", "settings.alerts", "settings.reminders", "settings.timeTrackingManual", "settings.summaryReportSettings", "settings.isCompactViewOn", "settings.dashboardSelection", "settings.dashboardViewType", "settings.dashboardPinToTop", "settings.projectListCollapse", "settings.collapseAllProjectLists", "settings.groupSimilarEntriesDisabled", "settings.myStartOfDay", "settings.projectPickerTaskFilter", "settings.lang", "settings.multiFactorEnabled", "settings.theme", "settings.scheduling", "settings.onboarding", "settings.showOnlyWorkingDays", "status", "customFields"}),

///////////////
// look from here //////////////////
    #"Invoked Custom Function" = Table.AddColumn (#"Colonnes supprimées1", "NumberOfEntries", each if [id] <> null then GetNumberOfEntriesPerUser([id])  else null),
    #"ListofEntries" =  Table.AddColumn (#"Invoked Custom Function", "Entries", each if [id] <> null then  List.Generate(
        () => [Result = try GetTimeEntries("63be77bd5e398c3868773062",1) otherwise null, pagenumber=1],
        each List.IsEmpty([Result]) = false,
// Look the line below with the static parameter "63be77bd5e398c3868773062"////
        each [Result = try GetTimeEntries("64104151cd49c235581406fb",pagenumber) otherwise null, pagenumber = [pagenumber] + 1],
        each [Result]) 
        else null)
in
    ListofEntries

 

 

 

 Result OK : 

FabienC_0-1682356474706.png

 

FabienC_1-1682356617095.png

 

 

Request "Clockify - users" - dynamic parameters ([id])
expected results : 215 

Results : 215 (with a pagination of 100 we have 3 lists)

OK

But I get 215 lines for each ID , as I pass a static parameter

 

 

Request "Clockify - users" - static parameters ( [id] )
expected results : 215 for the first ID, 695 for the second id, 48 for the third id, 416 for forth id, 26 for the last ID

Results : error

KO

check the 5th code line before the end. 

 

 

let
    Source = Json.Document(Web.Contents("https://api.clockify.me/api/v1//workspaces/63be77bd5e398c3868773063/users", [Headers=[#"X-Api-Key"="XXXX"]])),

// Not revelant /////////////////
    #"Converti en table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Column1 développé" = Table.ExpandRecordColumn(#"Converti en table", "Column1", {"id", "email", "name", "memberships", "profilePicture", "activeWorkspace", "defaultWorkspace", "settings", "status", "customFields"}, {"id", "email", "name", "memberships", "profilePicture", "activeWorkspace", "defaultWorkspace", "settings", "status", "customFields"}),
    #"settings développé" = Table.ExpandRecordColumn(#"Column1 développé", "settings", {"weekStart", "timeZone", "timeFormat", "dateFormat", "sendNewsletter", "weeklyUpdates", "longRunning", "scheduledReports", "approval", "pto", "alerts", "reminders", "timeTrackingManual", "summaryReportSettings", "isCompactViewOn", "dashboardSelection", "dashboardViewType", "dashboardPinToTop", "projectListCollapse", "collapseAllProjectLists", "groupSimilarEntriesDisabled", "myStartOfDay", "projectPickerTaskFilter", "lang", "multiFactorEnabled", "theme", "scheduling", "onboarding", "showOnlyWorkingDays"}, {"settings.weekStart", "settings.timeZone", "settings.timeFormat", "settings.dateFormat", "settings.sendNewsletter", "settings.weeklyUpdates", "settings.longRunning", "settings.scheduledReports", "settings.approval", "settings.pto", "settings.alerts", "settings.reminders", "settings.timeTrackingManual", "settings.summaryReportSettings", "settings.isCompactViewOn", "settings.dashboardSelection", "settings.dashboardViewType", "settings.dashboardPinToTop", "settings.projectListCollapse", "settings.collapseAllProjectLists", "settings.groupSimilarEntriesDisabled", "settings.myStartOfDay", "settings.projectPickerTaskFilter", "settings.lang", "settings.multiFactorEnabled", "settings.theme", "settings.scheduling", "settings.onboarding", "settings.showOnlyWorkingDays"}),
    #"Colonnes supprimées1" = Table.RemoveColumns(#"settings développé",{"memberships", "profilePicture", "activeWorkspace", "defaultWorkspace", "settings.weekStart", "settings.timeZone", "settings.timeFormat", "settings.dateFormat", "settings.sendNewsletter", "settings.weeklyUpdates", "settings.longRunning", "settings.scheduledReports", "settings.approval", "settings.pto", "settings.alerts", "settings.reminders", "settings.timeTrackingManual", "settings.summaryReportSettings", "settings.isCompactViewOn", "settings.dashboardSelection", "settings.dashboardViewType", "settings.dashboardPinToTop", "settings.projectListCollapse", "settings.collapseAllProjectLists", "settings.groupSimilarEntriesDisabled", "settings.myStartOfDay", "settings.projectPickerTaskFilter", "settings.lang", "settings.multiFactorEnabled", "settings.theme", "settings.scheduling", "settings.onboarding", "settings.showOnlyWorkingDays", "status", "customFields"}),

///////////////
// look from here //////////////////
    #"Invoked Custom Function" = Table.AddColumn (#"Colonnes supprimées1", "NumberOfEntries", each if [id] <> null then GetNumberOfEntriesPerUser([id])  else null),
    #"ListofEntries" =  Table.AddColumn (#"Invoked Custom Function", "Entries", each if [id] <> null then  List.Generate(
        () => [Result = try GetTimeEntries([id],1) otherwise null, pagenumber=1],
        each List.IsEmpty([Result]) = false,
// Look the line below with the static parameter "63be77bd5e398c3868773062"////
        each [Result = try GetTimeEntries([id],pagenumber) otherwise null, pagenumber = [pagenumber] + 1],
        each [Result]) 
        else null)
in
    ListofEntries

 

 

 

FabienC_0-1682357216632.png

 

-->My question : Why I get an error when I'm passing [id] as a parameter ? 

 

 

PS : thanks PBI Guy for the API loop code
https://pbi-guy.com/2022/07/05/how-to-loop-through-an-api-with-power-bi-without-knowing-last-page/

1 ACCEPTED SOLUTION
Anonymous
Not applicable

Hello,

I did find a solution by my self. Invoke a function in another invoked function. I imagine that can affect performance but I don't have many records, so it's quite fine for me. 

 

Regards

View solution in original post

1 REPLY 1
Anonymous
Not applicable

Hello,

I did find a solution by my self. Invoke a function in another invoked function. I imagine that can affect performance but I don't have many records, so it's quite fine for me. 

 

Regards

Helpful resources

Announcements
Power BI DataViz World Championships

Power BI Dataviz World Championships

The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now!

December 2025 Power BI Update Carousel

Power BI Monthly Update - December 2025

Check out the December 2025 Power BI Holiday Recap!

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.