Een bestand naar opslag schrijven vanuit een script
Doel
Laat een aangepaste API een bestand maken — een CSV-export, een JSON-bestand voor een ander systeem — en het ergens neerzetten waar een extern systeem het kan ophalen.
Waarom dit bestaat
Het platform heeft drie plekken waar een bestand kan staan, en die zijn niet uitwisselbaar.
| Voor | Voorbeeld | |
|---|---|---|
| Webresources | Bestanden die deel uitmaken van de applicatie | Een logo, een stylesheet |
| Recordbestanden | Een bestand dat bij één record hoort | De foto van een contactpersoon, een ondertekend contract |
| Objectopslag | Bestanden die bij geen enkel record horen | Een maandelijkse export, een bestand voor een integratie |
Het bestand van een record is aan een record gekoppeld en reist ermee mee. Een export hoort bij niemands record — er is geen rij om hem aan te hangen — en daarvoor is objectopslag.
Voordat je begint
Je hebt een bucketnaam nodig. Je hoeft de bucket niet te maken: de eerste schrijfactie maakt hem aan.
Bucketnamen bestaan uit kleine letters, cijfers en koppeltekens, 3–63 tekens. Ze worden gedeeld over
alle tenants, net als bij S3, dus een gewone naam als exports kan al bezet zijn — zet er iets van
jezelf voor, zoals par-exports hieronder.
Wat een script kan doen
putFile(bucket, key, text) | Schrijft een bestand. Antwoordt true, of false als het niet lukte |
putFileAs(bucket, key, text, contentType) | Hetzelfde, met de vermelding wat voor bestand het is |
getFile(bucket, key) | Leest het terug als tekst — de lege tekenreeks als het er niet is |
fileExists(bucket, key) | true of false |
listFiles(bucket, prefix) | De bestanden onder een voorvoegsel, elk met key, size, contentType en uploadedAt |
deleteFile(bucket, key) | Verwijdert er een |
De sleutel is het pad van het bestand binnen de bucket — claims/2026-09.csv. Schuine strepen zijn
gewoon deel van de naam, maar ze lezen als mappen in het opslagscherm, dus het loont om ermee te
groeperen.
Stappen
-
Open je oplossing en kies Aangepaste API's, daarna Nieuw.
-
Geef hem een route —
claims/export/{period}— en kies Post. -
Bouw in het script het bestand op als tekst en schrijf het weg:
var claims = runQuery({ entity: 'par_claim', select: ['par_name', 'par_amount'] });var csv: string = 'reference,amount\n';for (var i: int = 0; i < claims.length(); i++) {csv = csv + `${claims[i].par_name},${claims[i].par_amount}` + '\n';}putFileAs('par-exports', 'claims/' + getInput('period') + '.csv', csv, 'text/csv'); -
Kies Opslaan en roep hem aan.
Drie dingen waar mensen over struikelen
length()heeft zijn haakjes nodig.claims.lengthis geen fout — het is niets, dus een lus die daarop controleert, wordt nooit uitgevoerd en je export bestaat uit een kopregel en geen rijen. Dit is de enige fout hier die zichzelf niet aankondigt.- Je kunt geen getal bij een tekenreeks optellen.
'Total: ' + amountwordt geweigerd. Zet het getal in plaats daarvan in een sjabloon met backticks —`Total: ${amount}`— dat is de enige manier om er tekst van te maken. - Zeg wat voor bestand het is.
putFileslaat het op als platte tekst, en een browser toont platte tekst in het tabblad in plaats van het op te slaan. GebruikputFileAsmettext/csv,application/jsonof wat het echt is.
Controleer of het werkte
Ga naar Beheer → Opslag, open de bucket, en het bestand staat er met zijn grootte en type. Download het en controleer de inhoud.
Waar dit niet voor is
- Grote binaire bestanden. Het bestand van een script is tekst die het heeft opgebouwd. Afbeeldingen, pdf's en archieven worden door het platform zelf afgehandeld, dat ze streamt.
- Een bestand dat bij een record hoort. Zet in plaats daarvan een kolom van het type Bestand of Afbeelding op de tabel — die wordt geserveerd onder de eigen machtigingen van het record, en als je het record verwijdert, gaat het bestand mee.
- Iemand een link geven. Deze functies geven je script de tekst; ze maken geen URL aan. Een link die werkt zonder aanmelden, is een sleutel die iedereen kan doorgeven, dus dat is een bewuste stap elders, niet iets wat een script terloops doet.
Problemen oplossen
"Bucket was not found." Je leest of somt een bucket op die nog niet bestaat — alleen schrijven maakt er een aan. Schrijf eerst, of controleer de spelling.
Er staat niets in het bestand behalve de kopregel. length zonder de haakjes. Zie hierboven.
"Only numbers or strings are allowed in this expression." Je hebt een getal bij een tekenreeks opgeteld. Gebruik een sjabloon met backticks.
"This run has no caller." Het script is een asynchrone plug-instap. Die draaien nadat de aanvraag die ze in de wachtrij zette, is afgerond, dus er is niemand namens wie ze kunnen handelen. Gebruik een synchrone stap, of een aangepaste API.
Zie ook
- Een aangepaste API publiceren
- De voorbeeldoplossing
custom-api-object-storage-export, die deze pagina is als iets wat je kunt importeren en uitvoeren.