Zo voeg je de tabel toe
- Maak een API-sleutel aan, bijvoorbeeld met de naam “Power BI”.
- Open in Power BI Desktop Gegevens ophalen, kies Lege query en open de Geavanceerde editor.
- Plak het script uit het codevenster rechts (tab Power BI) en vervang
apib_live_JOUW_SLEUTELdoor je sleutel. PasPadaan naar de tabel die je wilt ophalen, volgens de referentie per koppeling. - Kies bij de vraag naar referenties voor Anoniem: de sleutel zit al in het script.
Kant-en-klare scripts per tabel staan op de referentiepagina van die tabel, onder het tabblad Power BI.
Het script
Het script loopt de pagina’s door tot next_cursor leeg is, haalt dubbele rijen weg (een rij die
tijdens het verversen wijzigt, kan twee keer binnenkomen) en laat rijen die bij de bron zijn
verwijderd weg. Filters voeg je toe aan Filters, bijvoorbeeld
Filters = [status = "betaald"], zie Een aanvraag opbouwen.
Let op
- De sleutel staat in je .pbix-bestand. Het script, en dus de sleutel, wordt in het Power BI-bestand zelf opgeslagen. Wees voorzichtig met het delen van dat bestand en trek de sleutel in als het ergens terechtkomt waar het niet hoort.
- Power BI onthoudt geen stand tussen verversingen. Een script met
modified_sincehaalt bij elke verversing alleen de rijen op sinds de datum die in het script staat, niet de hele tabel. Gebruik dat dus alleen met een vaste, bewust gekozen startdatum, en laat het weg als je altijd de volledige tabel wilt. Een watermark bewaren tussen runs kan alleen in een eigen script, zie Incrementeel ophalen. - Onvolledige administraties. Staat in het antwoord een administratie met
backfill_complete: false, dan is die nog niet volledig gesynchroniseerd en kan je rapport onvolledig zijn. - Limieten. Elke pagina is een aanvraag. Een grote tabel met veel verversingen kan je
gebruikslimiet raken; kies een grotere paginagrootte
met
limit = "1000"inFiltersen plan verversingen niet te dicht op elkaar.
Onze tip: gebruik voor Power BI een eigen sleutel met een naam die dat laat zien. Lekt het bestand, dan trek je alleen die sleutel in en blijven je andere integraties werken.
Aanvraag
GET https://app.apiboard.nl/api/v1/wefact/facturen HTTP/1.1
Host: app.apiboard.nl
Authorization: Bearer apib_live_JOUW_SLEUTEL curl -H "Authorization: Bearer apib_live_JOUW_SLEUTEL" \
"https://app.apiboard.nl/api/v1/wefact/facturen" import requests
TOKEN = "apib_live_JOUW_SLEUTEL"
URL = "https://app.apiboard.nl/api/v1/wefact/facturen"
resp = requests.get(URL, params={}, headers={"Authorization": f"Bearer {TOKEN}"})
resp.raise_for_status()
body = resp.json()
for rij in body["data"]:
print(rij)
print("Volgende pagina:", body["next_cursor"]) let
Basis = "https://app.apiboard.nl",
Pad = "/api/v1/wefact/facturen",
Token = "apib_live_JOUW_SLEUTEL",
Filters = [],
HaalPaginaOp = (cursor as nullable text) =>
Json.Document(Web.Contents(Basis, [
RelativePath = Pad,
Query = if cursor = null then Filters else Record.AddField(Filters, "cursor", cursor),
Headers = [Authorization = "Bearer " & Token]
])),
// Volg next_cursor tot die null is; de pagina met next_cursor = null telt ook mee.
Paginas = List.Generate(
() => HaalPaginaOp(null),
each _ <> null,
each if [next_cursor] = null then null else HaalPaginaOp([next_cursor]),
each [data]
),
AlleRijen = List.Combine(Paginas),
Tabel = if List.IsEmpty(AlleRijen)
then #table({"id", "synced_at"}, {})
else Table.FromRecords(AlleRijen, null, MissingField.UseNull),
// Dedupliceer op id: eerst de nieuwste versie bovenaan, dan houdt Distinct die.
// Verwijder daarna rijen die bij de bron verwijderd zijn.
NieuwsteEerst = Table.Buffer(Table.Sort(Tabel, {{"synced_at", Order.Descending}})),
ZonderDubbel = Table.Distinct(NieuwsteEerst, {"id"}),
ZonderVerwijderd = Table.SelectRows(ZonderDubbel, each Record.FieldOrDefault(_, "bron_verwijderd_op", null) = null)
in
ZonderVerwijderd Was dit artikel behulpzaam?