Skip to main content
Question

Consulta nula no Power query através de API

  • September 24, 2024
  • 2 replies
  • 64 views

Olá a todos, preciso de uma ajuda urgentemente para fazer uma conexão com meu gráfico no Power BI através de API, quero fazer essa conexão sem utilizar o conector do pipefy, pois a minha intenção é implementar atualizações automáticas em meu gráfico, e cheguei até conseguir uma API para conectar os dados, porém não está vindo todos os dados do meu pipe, vou deixar o código para vocês analisarem. Mas se alguém tiver um código pronto para fazer essa conexão, compartilhe comigo pfv.

 

let
    TOKENAUTH = "Bearer xxxxxxxx", // Inserir sua Chave da API
    PipeAnalisado = "xxxxxxxxxx", // Usar os numeros que seguem depois da URL: https://app.pipefy.com/pipes/______

    GeradorDeCards =
    (TOKENAUTH as text, PRIMEIROCARD as text) => 
    let
    query = "{""query"" : ""{ cards(pipe_id: "&PipeAnalisado&" "& PRIMEIROCARD &") { pageInfo { startCursor endCursor hasNextPage hasPreviousPage } edges { node { id title creatorEmail created_at finished_at updated_at due_date comments { text created_at } assignees { id name } labels { id name } created_by { id name } parent_relations { cards { id }} current_phase { id name } phases_history { phase { id name sequentialId } firstTimeIn lastTimeIn lastTimeOut duration } pipe { id name } fields { name report_value updated_at } } } } }""}",
    authURL = "https://app.pipefy.com/graphql",
    getToken = Web.Contents(
        authURL,
        [
            Headers=[
                    #"Method" = "POST",
                    #"Accept" = "application/json",
                    #"Authorization" =TOKENAUTH ,
                    #"Content-Type" = "application/json; charset=utf-8"
                    ],
            Content=Text.ToBinary(query)
        ]
    ),
    pipefyResponse = Json.Document(getToken),
    data = pipefyResponse[data],
    cards = data[cards],
        edges = cards[edges]
    in
        edges,

    GeradorDePaginas =
     (TOKENAUTH as text, PrimeiroCard as text) => let
        query = "{""query"" : ""{ cards(pipe_id: "&PipeAnalisado&" "& PrimeiroCard &") { pageInfo { startCursor endCursor hasNextPage hasPreviousPage } edges { node { id title creatorEmail created_at finished_at updated_at due_date comments { text created_at } assignees { id name } labels { id name } created_by { id name } current_phase { id name } phases_history { phase { id name sequentialId } firstTimeIn lastTimeIn lastTimeOut duration } pipe { id name } fields { indexName report_value name updated_at } } } } }""}",
        authURL = "https://app.pipefy.com/graphql",
        getToken = Json.Document(Web.Contents(authURL, [Headers=[Method="POST", Accept="application/json", Authorization=TOKENAUTH, #"Content-Type"="application/json; charset=utf-8"], Content=Text.ToBinary(query)])),
        data = getToken[data],
        cards = data[cards],
        #"Convertido para Tabela" = Record.ToTable(cards),
        Value = #"Convertido para Tabela"{0}[Value],
        #"Convertido para Tabela1" = Record.ToTable(Value),
        Nextpage = #"Convertido para Tabela1"{2}[Value],
        STARTFROM = #"Convertido para Tabela1"{1}[Value],
        res = [maispagina = Nextpage, cursorstart = STARTFROM]
    in
        res,

    Fonte = List.Generate(
    () =>
        [Consulta = GeradorDePaginas(TOKENAUTH, ""), PG = 1, newstart = "", TOKENAUTH = TOKENAUTH],
        each [newstart] <> null,
        each [PG = [PG]+1, newstart = ("after: \#(0022)"& [Consulta][cursorstart] &"\#(0022)"), Consulta = GeradorDePaginas(TOKENAUTH, newstart), TOKENAUTH = [TOKENAUTH] ],
        each [[TOKENAUTH], [PG], [newstart]]
    ),
    #"Convertido para Tabela" = Table.FromList(Fonte, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Column1 Expandido" = Table.ExpandRecordColumn(#"Convertido para Tabela", "Column1", {"TOKENAUTH", "PG", "newstart"}, {"Column1.TOKENAUTH", "Column1.PG", "Column1.newstart"}),
    #"Função Personalizada Invocada" = Table.AddColumn(#"Column1 Expandido", "GeradorDeCards", each GeradorDeCards([Column1.TOKENAUTH], [Column1.newstart])),
    #"GeradorDeCards Expandido" = Table.ExpandListColumn(#"Função Personalizada Invocada", "GeradorDeCards"),
    #"GeradorDeCards Expandido1" = Table.ExpandRecordColumn(#"GeradorDeCards Expandido", "GeradorDeCards", {"node"}, {"GeradorDeCards.node"}),
    #"GeradorDeCards.node Expandido" = Table.ExpandRecordColumn(#"GeradorDeCards Expandido1", "GeradorDeCards.node", {"id", "title", "creatorEmail", "created_at", "finished_at", "updated_at", "due_date", "comments", "assignees", "labels", "created_by", "current_phase", "phases_history", "pipe", "fields"}, {"GeradorDeCards.node.id", "GeradorDeCards.node.title", "GeradorDeCards.node.creatorEmail", "GeradorDeCards.node.created_at", "GeradorDeCards.node.finished_at", "GeradorDeCards.node.updated_at", "GeradorDeCards.node.due_date", "GeradorDeCards.node.comments", "GeradorDeCards.node.assignees", "GeradorDeCards.node.labels", "GeradorDeCards.node.created_by", "GeradorDeCards.node.current_phase", "GeradorDeCards.node.phases_history", "GeradorDeCards.node.pipe", "GeradorDeCards.node.fields"}),
    #"Linhas Filtradas" = Table.SelectRows(#"GeradorDeCards.node Expandido", each ([GeradorDeCards.node.id] <> null)),
    #"Colunas Removidas" = Table.RemoveColumns(#"Linhas Filtradas",{"Column1.TOKENAUTH", "Column1.PG", "Column1.newstart"})
in
    #"Colunas Removidas"

 

2 replies

paulo.teixeira wrote:

 

 


Leonardo Lucena
Pipefy Staff
Forum|alt.badge.img+1

Bom dia @paulo.teixeira tudo bem? No caso o suporte do Pipefy não oferece o suporte direto nesse caso, somente quando realizado pelo Pipefy essa integração. Mas caso os membros da comunidade tenham conhecimento sobre e puder ajudar, creio que será útil para ti.

 

 


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings