Forum Discussion

sbenzaquen's avatar
sbenzaquen
Icon for Helper I rankHelper I
5 years ago
Solved

API: syntax error on access token

Hi, I'm using the following code to connect to Harvest API and use a smart pagination system, but a syntax error "token identified expected" appears marking the access token section (from "Headers"). Could you please let me know what's wrong?

 

let
iterations = 10,
url =
"https://api.harvestapp.com/v2/time_entries?from=" & "2021-01-01&to=2021-07-31",[Headers=[#"Harvest-Account-Id"="1051XXX", Authorization="Bearer 1846XXX.pt.-4C7p34XXXXXXXXX1dCRiBEgrmR8NOJ3SPgBBSwuwXZzp6dJ2jwi-gfg"]])),

FnGetOnePage =
(url) as record =>

let
Source = Json.Document(Web.Contents(url)),
data = try Source[data] otherwise null,
next = try Source[links][next] otherwise null,
res = [Data=data, Next=next]
in
res,

GeneratedList =
List.Generate(
()=>[i=0, res = FnGetOnePage(url)],
each [i]<iterations and [res][Data]<>null,
each [i=[i]+1, res = FnGetOnePage([res][Next])],
each [res][Data])
in
GeneratedList

 

 

Thanks,
Salvador

  • Hi sbenzaquen ,

    "url =
    "https://api.harvestapp.com/v2/time_entries?from=" & "2021-01-01&to=2021-07-31",[Headers=[#"Harvest-Account-Id"="1051XXX", Authorization="Bearer 1846XXX.pt.-4C7p34XXXXXXXXX1dCRiBEgrmR8NOJ3SPgBBSwuwXZzp6dJ2jwi-gfg"]]))"

    This syntax is not correct in power query, ',' means the ending of a query statement, contents after ',' would be a new query statement, '))' are not be used in the statement.

     

    Try to modify the query like this:

     

    let
        iterations = 10,
        url ="https://api.harvestapp.com/v2/time_entries?from=" & "2021-01-01&to=2021-07-31",
        header = 
            [Headers =
                [#"Harvest-Account-Id"="1051XXX", Authorization="Bearer 1846XXX.pt.-4C7p34XXXXXXXXX1dCRiBEgrmR8NOJ3SPgBBSwuwXZzp6dJ2jwi-gfg"
                ]
            ],
    
    FnGetOnePage =
    (url,header) =>
    
    let
    Source = Json.Document(Web.Contents(url,header)),
    data = try Source[data] otherwise null,
    next = try Source[links][next] otherwise null,
    res = [Data=data, Next=next]
    in
    res,
    
    GeneratedList =
    List.Generate(
    ()=>[i=0, res = FnGetOnePage(url,header)],
    each [i]<iterations and [res][Data]<>null,
    each [i=[i]+1, res = FnGetOnePage([res][Next])],
    each [res][Data])
    in
    GeneratedList

     

    Here is an example syntax of using parameter in power query based on Web.Contents():

     

    let
        url = "https://api.powerbi.com/v1.0/myorg/datasets/" & "xxx",
        header = 
            [   Headers = 
                    [#"Authorization" = "Bearer xxx"]
            ],
        Source = Json.Document(Web.Contents(url,header))
            
    in
        Source

     

     

    Refer: THE HIDDEN GEMS OF THE FUNCTION WEB.CONTENTS() 

     

    Best Regards,
    Community Support Team _ Yingjie Li
    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

1 Reply

  • v-yingjl's avatar
    v-yingjl
    Icon for Community Support rankCommunity Support

    Hi sbenzaquen ,

    "url =
    "https://api.harvestapp.com/v2/time_entries?from=" & "2021-01-01&to=2021-07-31",[Headers=[#"Harvest-Account-Id"="1051XXX", Authorization="Bearer 1846XXX.pt.-4C7p34XXXXXXXXX1dCRiBEgrmR8NOJ3SPgBBSwuwXZzp6dJ2jwi-gfg"]]))"

    This syntax is not correct in power query, ',' means the ending of a query statement, contents after ',' would be a new query statement, '))' are not be used in the statement.

     

    Try to modify the query like this:

     

    let
        iterations = 10,
        url ="https://api.harvestapp.com/v2/time_entries?from=" & "2021-01-01&to=2021-07-31",
        header = 
            [Headers =
                [#"Harvest-Account-Id"="1051XXX", Authorization="Bearer 1846XXX.pt.-4C7p34XXXXXXXXX1dCRiBEgrmR8NOJ3SPgBBSwuwXZzp6dJ2jwi-gfg"
                ]
            ],
    
    FnGetOnePage =
    (url,header) =>
    
    let
    Source = Json.Document(Web.Contents(url,header)),
    data = try Source[data] otherwise null,
    next = try Source[links][next] otherwise null,
    res = [Data=data, Next=next]
    in
    res,
    
    GeneratedList =
    List.Generate(
    ()=>[i=0, res = FnGetOnePage(url,header)],
    each [i]<iterations and [res][Data]<>null,
    each [i=[i]+1, res = FnGetOnePage([res][Next])],
    each [res][Data])
    in
    GeneratedList

     

    Here is an example syntax of using parameter in power query based on Web.Contents():

     

    let
        url = "https://api.powerbi.com/v1.0/myorg/datasets/" & "xxx",
        header = 
            [   Headers = 
                    [#"Authorization" = "Bearer xxx"]
            ],
        Source = Json.Document(Web.Contents(url,header))
            
    in
        Source

     

     

    Refer: THE HIDDEN GEMS OF THE FUNCTION WEB.CONTENTS() 

     

    Best Regards,
    Community Support Team _ Yingjie Li
    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.