1let
2 TOKENAUTH = "Bearer xxxxxxxx", // Inserir sua Chave da API
3 PipeAnalisado = "xxxxxxxxxx", // Usar os numeros que seguem depois da URL: https://app.pipefy.com/pipes/______
4
5 GeradorDeCards =
6 (TOKENAUTH as text, PRIMEIROCARD as text) =>
7 let
8 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 } } } } }""}",
9 authURL = "https://app.pipefy.com/graphql",
10 getToken = Web.Contents(
11 authURL,
12 [
13 Headers=[
14 #"Method" = "POST",
15 #"Accept" = "application/json",
16 #"Authorization" =TOKENAUTH ,
17 #"Content-Type" = "application/json; charset=utf-8"
18 ],
19 Content=Text.ToBinary(query)
20 ]
21 ),
22 pipefyResponse = Json.Document(getToken),
23 data = pipefyResponse[data],
24 cards = data[cards],
25 edges = cards[edges]
26 in
27 edges,
28
29 GeradorDePaginas =
30 (TOKENAUTH as text, PrimeiroCard as text) => let
31 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 } } } } }""}",
32 authURL = "https://app.pipefy.com/graphql",
33 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)])),
34 data = getToken[data],
35 cards = data[cards],
36 #"Convertido para Tabela" = Record.ToTable(cards),
37 Value = #"Convertido para Tabela"{0}[Value],
38 #"Convertido para Tabela1" = Record.ToTable(Value),
39 Nextpage = #"Convertido para Tabela1"{2}[Value],
40 STARTFROM = #"Convertido para Tabela1"{1}[Value],
41 res = [maispagina = Nextpage, cursorstart = STARTFROM]
42 in
43 res,
44
45 Fonte = List.Generate(
46 () =>
47 [Consulta = GeradorDePaginas(TOKENAUTH, ""), PG = 1, newstart = "", TOKENAUTH = TOKENAUTH],
48 each [newstart] <> null,
49 each [PG = [PG]+1, newstart = ("after: \#(0022)"& [Consulta][cursorstart] &"\#(0022)"), Consulta = GeradorDePaginas(TOKENAUTH, newstart), TOKENAUTH = [TOKENAUTH] ],
50 each [[TOKENAUTH], [PG], [newstart]]
51 ),
52 #"Convertido para Tabela" = Table.FromList(Fonte, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
53 #"Column1 Expandido" = Table.ExpandRecordColumn(#"Convertido para Tabela", "Column1", {"TOKENAUTH", "PG", "newstart"}, {"Column1.TOKENAUTH", "Column1.PG", "Column1.newstart"}),
54 #"Função Personalizada Invocada" = Table.AddColumn(#"Column1 Expandido", "GeradorDeCards", each GeradorDeCards([Column1.TOKENAUTH], [Column1.newstart])),
55 #"GeradorDeCards Expandido" = Table.ExpandListColumn(#"Função Personalizada Invocada", "GeradorDeCards"),
56 #"GeradorDeCards Expandido1" = Table.ExpandRecordColumn(#"GeradorDeCards Expandido", "GeradorDeCards", {"node"}, {"GeradorDeCards.node"}),
57 #"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"}),
58 #"Linhas Filtradas" = Table.SelectRows(#"GeradorDeCards.node Expandido", each ([GeradorDeCards.node.id] <> null)),
59 #"Colunas Removidas" = Table.RemoveColumns(#"Linhas Filtradas",{"Column1.TOKENAUTH", "Column1.PG", "Column1.newstart"})
60in
61 #"Colunas Removidas"