Forum Discussion
Cursor Datos paginados de Web API
Hola @eyeballkid ,
un día, llegaremos 😉
let
myList = List.Generate( ()=>
[Result = Query4("https://api.brighttalk.com/v1/channel/10737/webcasts"), Counter = 0],
each [Counter] < 5,
each [Result = Query4(Table.LastN([Result]{[Name = "link"]}[Table], 1){0}[#"Attribute:href"]), Counter = [Counter]+1],
each [Result])
in
myList
Hola @ImkeF,
Cualquier oportunidad que también pueda ayudarme, problema muy similar a este hilo, pero tengo que profundizar unos pasos para obtener mi 'siguiente' url
Función GetURL:
(url as text) as table =>
let
Source = Json.Document(Web.Contents(url)),
results = Source[results],
#"Converted to Table" = Table.FromList(results, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Expanded Column1" = Table.ExpandRecordColumn(#"Converted to Table", "Column1", {"id", "properties", "createdAt", "updatedAt", "archived"}, {"id", "properties", "createdAt", "updatedAt", "archived"}),
#"Expanded properties" = Table.ExpandRecordColumn(#"Expanded Column1", "properties", {"amount", "createdate", "dealstage", "hs_lastmodifieddate", "hs_object_id", "printing_kpi_by"}, {"amount", "createdate", "dealstage", "hs_lastmodifieddate", "hs_object_id", "printing_kpi_by"})//& Number.ToText(after))),
in
#"Expanded properties"
el resultado si solo solicito la primera URL y no se está profundizando (disculpas por usar una tabla pero tener errores cada vez que intento cargar capturas de pantalla):
| Nombre | Valor |
| Resultados | Lista |
| Paginación | Registros |
La siguiente dirección URL se encuentra dentro de los registros de "paginación", se requieren los siguientes pasos para llegar a ella:
let
source = Json.Document(Web.Contents("https://api.hubapi.com/crm/v3/objects/deals?limit=100&paginateAssociations=false&archived=false&hapikey=APIKEY&properties=dealstage&after=0")),
#"Converted to Table" = Record.ToTable(source),
Value = #"Converted to Table"{1}[Value],
next = Value[next],
#"Converted to Table1" = Record.ToTable(next)
in
#"Converted to Table1"
Que devuelve la tabla siguiente:
| Nombre | Valor |
| Después | 1677291168 |
| Enlace | https://api.hubapi.com/crm/v3/objects/deals?archived=false&paginateAssociations=false&limit=100&after=1677291168&properties=dealstage |
Este es el código que estoy tratando de ajustar basado en este hilo, sólo estoy inseguro cómo hacer referencia al siguiente enlace correctamente
let
myList = List.Generate( ()=>
[Result = GetURL("https://api.hubapi.com/crm/v3/objects/deals?limit=100&paginateAssociations=false&archived=false&hapikey=APIKEY&properties=dealstage&after=0"), Counter = 0],
each [Counter] < 5,
each [Result = GetURL(Table.LastN([Result]{[Name = "link"]}[next], 1){0}[#"Attribute:value"]), Counter = [Counter] +1],
each [Result])
in
myList
Devuelve una lista de 5, la tabla de la fila 1 se extrae correctamente como 'Tabla' el siguiente 4 se muestran como errores.
"Expression.Error: la clave no coincide con ninguna fila de la tabla
Detalles:
Llave de la tecla ?
Nombre-enlace
Tabla[Tabla]
Cualquier ayuda sería muy apreciada,
¡Gracias!