Consulta API BLING Power BI – Contas a Receber

Continuando a série de vídeos sobre as consultas de API, desta vez resolvi trazer uma solução para a API da BLING.

Nesse exemplo utilizei o Contas a Receber e consulta retorna 100 títulos por página e por causa disso, precisamos criar uma lista de páginas para fazer essa requisição.

E, infelizmente a documentação não deixa clara como fazer a consulta do total de páginas ou total de títulos para utilizar o List.Generate de forma automática.

Link da Documentação

O código abaixo está configurado para pegar o valor da apikey com o parâmetro api_key.

A paginação é realizada com base no parâmetro pag_contas_receber. Logo, a quantidade de páginas dependerá do valor informado nele.

let
    BlingCall = (pagina as number) =>
    let
    Request =
        Json.Document(
            Web.Contents(
                "https://bling.com.br/",
                [
                    RelativePath = "b/Api/v2/contasreceber/page="&Text.From(pagina)&"/json/",
                    Query =
                    [
                        apikey = api_key
                    ]
                ]
                )
            )
    in
    Request,
    Source = Table.FromList(List.Generate( () => 1 , each _ <= pag_contas_receber, each _ +1), Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Invoked Custom Function" = Table.AddColumn(Source, "Modelo", each BlingCall([Column1])),
    #"Expanded {0}" = Table.ExpandRecordColumn(#"Invoked Custom Function", "Modelo", {"retorno"}, {"retorno"}),
    #"Expanded {0}1" = Table.ExpandRecordColumn(#"Expanded {0}", "retorno", {"contasreceber"}, {"contasreceber"}),
    #"Expanded {0}2" = Table.ExpandListColumn(#"Expanded {0}1", "contasreceber"),
    #"Expanded {0}3" = Table.ExpandRecordColumn(#"Expanded {0}2", "contasreceber", {"contaReceber"}, {"contaReceber"}),
    #"Expanded {0}4" = Table.ExpandRecordColumn(#"Expanded {0}3", "contaReceber", {"id", "dataEmissao"}, {"id", "dataEmissao"}),
    #"Sorted Rows" = Table.Sort(#"Expanded {0}4",{{"dataEmissao", Order.Descending}})
in
    #"Sorted Rows"

Conforme comento no vídeo, os parâmetros estão disponíveis na consultas conforme imagem abaixo.

Para cada consulta que criar, você precisa cadastrar um parâmetro novo para o total de páginas.

Pode ser que o mesmo parâmetro seja utilizado em consultas diferentes, mas eu gosto de ter certeza que as requisições da API não serão mais do que precisa.

Lembro que já tem um artigo explicando com detalhes como trabalhar com List.Generate que você pode conferir no link:

Consulta API OMIE no Power BI – Pesquisar Cidades