Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and a 50 percent discount on exams.
Get startedEarn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.
Función (fx_Caledly_Event_Pagination_WithPageID)
(PageToken as text)=>
let
Source = Json.Document(Web.Contents("https://api.calendly.com/scheduled_events/?organization=https://api.calendly.com/organizations/D457896GHEBHGDDL&sort=start_time:desc&next_page_token=" &PageToken, [Headers=[Authorization="************", #"Content-Type"="application/json"]])),
pagination = Source[pagination],
#"Converted to Table" = Record.ToTable(pagination),
#"Filtered Rows" = Table.SelectRows(#"Converted to Table", each ([Name] = "next_page_token")),
#"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Name"})
in
#"Removed Columns"
Captura de pantalla
A continuación, trato de generar todos los tokens de la página siguiente, pero solo obtengo 1,
let
Source = List.Generate(
()=> [Result = try fx_Caledly_Event_Pagination_WithPageID("") otherwise null, PageNum=1],
each [Result] <> null,
each [Result = try fx_Caledly_Event_Pagination_WithPageID(List.Single([Result])) otherwise null, PageNum=[PageNum]+1 ],
each [Result]
),
#"Converted to Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Expanded Column1" = Table.ExpandTableColumn(#"Converted to Table", "Column1", {"Value"}, {"Column1.Value"})
in
#"Expanded Column1"
Captura de pantalla
He estado luchando con esto todo el día y parece que no puedo entenderlo. Realmente me vendría bien un poco de ayuda para generar una lista completa de todos esos tokens de la página siguiente. Realmente agradecería cualquier ayuda que pueda ofrecer.
¡Muchas gracias!
Hola @Zack92
List.Generate(
()=> [Result = try fx_Caledly_Event_Pagination_WithPageID("") otherwise null, PageNum=1],
each [Result] <> null,
each [Result = try fx_Caledly_Event_Pagination_WithPageID(List.Single([Result])) otherwise null, PageNum=[PageNum]+1 ],
each [Result]
Mencionaste que solo obtienes una página. Esto se debe a que la primera iteración no es igual a null, por lo que se detiene justo ahí.
()=> [Resultado = try fx_Caledly_Event_Pagination_WithPageID("") de lo contrario nulo, PageNum=1],
cada [Resultado] <> nulo
Es posible que desee probar lo contrario. Querrá que se ejecute hasta que el número de página sea nulo. Si esto no funciona, simplemente crearía una lista de números/tablas de números para iterar. Ejemplo {1..10}. Esto crea una lista de números del 1 al 10.
@danextian
Hazlo mejor
Gracias por echar un vistazo a mi problema. Lo siento, pero tengo problemas para entender tu explicación. Podría deberse a que no tengo mucho conocimiento sobre el desarrollo de API. ¿Podría explicar la diferencia entre su código de "generación de listas" y "generación de listas"? ¿Puede decirme cómo solucionar ese problema para que no se detenga?
Hola @Zack92
Mi sugerencia es crear una lista de números que contenga la página por la que desea iterar. Por supuesto, la lista no va a ser exacta: puede contener más o menos números de página de los requeridos, ya que no sabemos cuántas páginas hay exactamente. El código sería más o menos así:
let
//list of numbers from one through 15
Source = {1 .. 15} ,
#"Converted to Table" = Table.FromList(
Source,
Splitter.SplitByNothing(),
{"Numbers"},
null,
ExtraValues.Error
),
#"Changed Type" = Table.TransformColumnTypes(#"Converted to Table", {{"Numbers", type text}}),
#"Added Custom" = Table.AddColumn(
#"Changed Type",
"Custom",
each
let
x = [Numbers]
in
Json.Document(
Web.Contents(
"https://api.calendly.com/",
[
RelativePath = "scheduled_events/?organization=https://api.calendly.com/organizations/D457896GHEBHGDDL&sort=start_time:desc&next_page_token="
& x,
Headers = [Authorization = "************", #"Content-Type" = "application/json"]
]
)
)
)
in
#"Added Custom"