FileMaker Data API uitvoeren
Voert een FileMaker Data API-verzoek uit.
Zie ook
Opties
-
Met Gehele inhoud selecteren wordt de inhoud van een veld of een variabele vervangen. Als u deze optie niet selecteert:
-
Bij een veld wordt alleen het geselecteerde deel van het actieve veld vervangen of worden gegevens bij de invoegpositie ingevoegd. Het invoegpunt bevindt zich standaard aan het eind van de gegevens in het veld.
-
Bij een variabele zonder containergegevens worden gegevens op het einde van de huidige waarde van de variabele ingevoegd. Bij een variabele met containergegevens wordt de inhoud van de variabele vervangen.
-
-
Met Doel geeft u het veld op waarin u het resultaat wilt invoegen of de variabele die u wilt instellen. Als de variabele niet bestaat, maakt deze scriptstap die (raadpleeg Variabelen gebruiken).
-
Verzoek is een berekening waarin het verzoek als tekst wordt opgegeven. De tekst is een JSON-object met de indeling die hieronder wordt beschreven.
Compatibiliteit
Product | Ondersteund |
---|---|
FileMaker Pro |
Ja |
FileMaker Go |
Ja |
FileMaker WebDirect |
Ja |
FileMaker Server |
Ja |
FileMaker Cloud |
Ja |
FileMaker Data API |
Ja |
Custom Web Publishing |
Ja |
Afkomstig uit versie
19.0
Beschrijving
De FileMaker Data API is een REST-API die beschikbaar is als een webservice voor FileMaker Server en FileMaker Cloud. Webtoepassingen kunnen deze API gebruiken om verzoeken te verzenden en gegevens in JSON-indeling te ontvangen van gehoste FileMaker Pro-bestanden.
Deze scriptstap maakt gebruik van dezelfde onderliggende functionaliteit als de FileMaker Data API op FileMaker-hosts om een script dat wordt uitgevoerd door een FileMaker-product, de mogelijkheid te bieden gegevens in het huidige bestand op te vragen, ongeacht of dit bestand gehost is of niet, en de gegevens te ontvangen in JSON-indeling. Deze scriptstap maakt geen webservice-aanroep naar een host met behulp van de FileMaker Data API, en is ook niet afhankelijk van of de API al dan niet is ingeschakeld op een host. De gelijkenis tussen deze scriptstap en de FileMaker Data API is vooral dat de JSON indeling van de geretourneerde gegevens hetzelfde is. Het verzoek bestaat uit een eenvoudig JSON-object, in plaats van de combinatie van URL, header en verzoektekst die de FileMaker Data API vereist om een webservice van een FileMaker-host te gebruiken. Het resultaat dat wordt geretourneerd in Doel heeft dezelfde JSON-indeling als bij een verzoek van een host via de FileMaker Data API.
Indeling van verzoek
Deze scriptstap ondersteunt de volgende sleutel-waardeparen in het JSON-object dat wordt opgegeven met de optie Verzoek. Als een van deze sleutels niet is opgegeven in het verzoek, wordt de standaardwaarde gebruikt.
Sleutel | Standaardwaarde | Beschrijving |
---|---|---|
|
|
|
|
|
|
|
|
De naam van een lay-out. |
|
|
De naam van een tabelvermelding. Vereist voor |
|
all records |
Een matrix van JSON-objecten, die elk een veld en zoekcriteria opgeven. |
|
|
De unieke ID van een record. U kunt niet zowel de sleutel |
|
|
Een JSON-object dat de sorteervolgorde opgeeft van records in de tabel van de huidige lay-out. |
|
|
Het recordnummer van de eerste record in een bereik van records in de tabel van de huidige lay-out. |
|
|
Het maximum aantal records dat moet worden geretourneerd uit de tabel van de huidige lay-out. |
|
waarde uit |
Als u de gegevens wilt ophalen in de context van een andere lay-out, geeft u de naam van de lay-out op. |
|
all portals |
Een JSON-object dat een portaal aangeeft. |
|
|
Het recordnummer van de eerste portaalrecord in een bereik van gerelateerde records. Voor |
|
50 |
Het maximum aantal gerelateerde records dat moet worden geretourneerd. Voor |
|
|
Een JSON-object dat recordgegevens specificeert die moeten worden gemaakt of bijgewerkt. |
|
|
Een JSON-object dat gerelateerde recordgegevens opgeeft die moeten worden gemaakt of bijgewerkt. |
|
|
(Optioneel) voor een updateactie, de wijzigings-ID van de bij te werken record. Als deze niet overeenkomt met de huidige modus-ID van de record, wordt de record niet gewijzigd. |
|
|
(Optioneel) Bij het schrijven van gegevens negeert deze scriptstap of de optie Gebruiker toestaan om bevestiging te negeren tijdens gegevensinvoer is geselecteerd en gebruikt in plaats daarvan de waarde
Raadpleeg Veldbevestiging definiëren. |
|
|
(Optioneel) Bij het schrijven van gegevens negeert deze scriptstap of de optie Wijzigen van waarde tijdens gegevensinvoer verbieden in een veld is geselecteerd en gebruikt deze in plaats daarvan de waarde
Raadpleeg Automatische gegevensinvoer definiëren. |
Voor meer informatie over de hierboven vermelde sleutels, bekijkt u de onderwerpen onder "Werken met records" en "Metagegevens ophalen" en "Zoekopdracht uitvoeren" in de handleiding van de FileMaker Data API.
De volgende sleutels worden genegeerd:
-
databases
wordt genegeerd omdat het altijd de database is die hoort bij het venster waarin het script wordt uitgevoerd. -
Autorisatie
wordt genegeerd omdat de privileges van het script overeenkomen met die van de huidige gebruiker of volledige toegang, als aan het huidige script privileges voor volledige toegang zijn toegewezen. -
Content-Type
wordt genegeerd omdat het verzoek de JSON-indeling moet hebben. -
script
en sleutels die beginnen metscript.
worden genegeerd. Als u een ander script wilt uitvoeren, gebruikt u in plaats daarvan de Script uitvoeren scriptstap.
Foutafhandeling
Het JSON-resultaat in Doel bevat minimaal een berichten
-sleutel met een object dat bericht
- en code
-sleutels bevat. De code
-waarden zijn de waarden die zijn gedefinieerd in FileMaker-foutcodes. De meeste waarden voor message
en code
zijn hetzelfde als de waarden die worden geretourneerd door de FileMaker Data API die als webservice beschikbaar is op FileMaker-hosts. Enkele aanvullende fouten zijn uniek voor deze scriptstap en helpen bij het identificeren van problemen tijdens het parseren van de optie Verzoek. Deze aanvullende fouten gebruiken de code
-waarden 3, 1708 en 1710 maar er worden allerlei verschillende message
-waarden gebruikt om meer details over de fout te geven.
De functies Get (LaatsteFout) en Get (LaatsteFoutGegevens) geven dezelfde waarden als resultaat als in respectievelijk de code
- en berichten
-sleutels. Get (LaatsteFoutLocatie) geeft waar de fout is opgetreden als resultaat in het script.
Opmerkingen
-
Deze scriptstap wordt uitgevoerd in een eigen sessie die geen verband houdt met de context van elk venster of script dat wordt uitgevoerd, inclusief het script dat deze scriptstap uitvoert. Gebruik deze scriptstap daarom alsof u een FileMaker Data API-aanroep doet naar een host via het netwerk. Als zodanig worden scriptactiveringen en dialoogvensters voor foutrapportage uitgeschakeld terwijl deze scriptstap wordt uitgevoerd.
-
Als het bestand wordt gehost door FileMaker Server of FileMaker Cloud, bestaan de geretourneerde waarden van containervelden uit URL‘s die kunnen worden gebruikt om de veldinhoud op te halen. Als het bestand lokaal wordt geopend, bestaat het resultaat alleen uit de naam van het bestand in het containerveld.
Voorbeeld 1
Dit voorbeeldscript retourneert metagegevens voor alle tabelvermeldingen doordat er geen waarde wordt opgegeven voor de sleutel tables
. In dit geval gaat het om één brontabel (of basistabel) (namelijk Producten) en twee tabelvermeldingen (Producten en Producten_op_voorraad). In dit voorbeeld wordt de JSONSetElement functie gebruikt om het JSON-object te maken in de optie Verzoek
.
FileMaker Data API uitvoeren [ Select ; Target: $$result ;
JSONSetElement ( "{}" ;
[ "action" ; "metaData" ; JSONString ] ;
[ "tables" ; "" ; JSONString ]
) ]
Variabele instellen [ $$result ; JSONFormatElements ( $$result ) ]
De JSON-gegevens die worden geretourneerd in de algemene variabele $$result hebben deze vorm.
{
"messages" :
[
{
"code" : "0",
"messages" : "OK"
}
],
"response" :
{
"tables" :
[
{
"baseTable" : "Producten",
"naam" : "Producten"
},
{
"baseTable" : "Producten",
"name" : "Producten_op_voorraad"
}
]
}
}
Voorbeeld 2
Dit voorbeeldscript retourneert op basis van de lay-out Producten de eerste record in de tabel die is gekoppeld aan de lay-out Producten.
FileMaker Data API uitvoeren [ Select ; Target: $$result ;
JSONSetElement ( "{}" ;
[ "layouts" ; "Producten" ; JSONString ] ;
[ "limit" ; 1 ; JSONNumber ]
) ]
Variabele instellen [ $$result ; JSONFormatElements ( $$result ) ]
De JSON-gegevens die worden geretourneerd in de algemene variabele $$result hebben deze vorm.
{
"messages" :
[
{
"code" : "0",
"message" : "OK"
}
],
"response" :
{
"data" :
[
{
"fieldData" :
{
"ID" : "FB1",
"Name" : "Donuts",
"Stock" : 43
},
"modId" : "6",
"portalData" : {},
"recordId" : "1"
}
],
"dataInfo" :
{
"database" : "Favoriete bakker",
"foundCount" : 3,
"layout" : "Producten",
"returnedCount" : 1,
"tabel": "Producten",
"totalRecordCount" : 3
}
}
}
Voorbeeld 3
Dit voorbeeldscript voert op basis van de lay-out Producten een zoekopdracht uit naar records waarvan het veld Voorraad lager is dan 40, waarna de gevonden set wordt geretourneerd, in aflopende volgorde gesorteerd op het veld Voorraad.
FileMaker Data API uitvoeren [ Select ; Target: $$result ;
JSONSetElement ( "{}" ;
[ "layouts" ; "Producten" ; JSONString ] ;
[ "query" ; "[ { \"Stock\":\"<40\" } ]" ; JSONArray ] ;
[ "sort" ; "[ { \"fieldName\":\"Voorraad\" ,
\"sortOrder\":\"descend\" } ]" ; JSONArray ]
) ]
Variabele instellen [ $$result ; JSONFormatElements ( $$result ) ]
De JSON-gegevens die worden geretourneerd in de algemene variabele $$result hebben deze vorm.
{
"messages" :
[
{
"code" : "0",
"message" : "OK"
}
],
"response" :
{
"data" :
[
{
"fieldData" :
{
"ID" : "FB3",
"Name" : "Stokbrood",
"Stock" : 34
},
"modId" : "1",
"portalData" : {},
"recordId" : "7"
},
{
"fieldData" :
{
"ID" : "FB2",
"Name" : "Chocoladecake",
"Stock" : 23
},
"modId" : "1",
"portalData" : {},
"recordId" : "6"
}
],
"dataInfo" :
{
"database" : "Favoriete bakker",
"foundCount" : 2,
"layout" : "Producten",
"returnedCount" : 2,
"table" : "Producten",
"totalRecordCount" : 3
}
}
}
Voorbeeld 4
Dit voorbeeldscript geeft op basis van de lay-out Producten als resultaat de eerste record in de tabel die is gekoppeld aan de lay-out Producten en als er portaalrijen zijn, worden de eerste twee records als resultaat gegeven nadat de eerste twee zijn overgeslagen.
FileMaker Data API uitvoeren [ Selecteer ; Doel: $$result ;
JSONSetElement ( "{}" ;
[ "layouts" ; "Producten" ; JSONString ] ;
[ "limit" ; 1 ; JSONNumber ] ;
[ "limit.RelatedProducts" ; 2; JSONNumber ] ;
[ "offset.RelatedProducts" ; 2 ; JSONNumber ]
) ] Variabele instellen [ $$result ; JSONFormatElements ( $$result ) ]
De JSON-gegevens die worden geretourneerd in de algemene variabele $$result hebben deze vorm.
{
"messages" :
[
{
"code" : "0",
"message" : "OK"
}
],
"response" :
{
"data" :
[
{
"fieldData" :
{
"ID" : "FB1",
"Name" : "Donuts",
"Stock" : 43
},
"modId" : "6",
"portalData" : {
"RelatedProducts" :
[
{
"ID" : "FB4",
"Name" : "Oliebollen",
"Stock" : 53
},
{
"ID" : "FB5",
"Name" : "Gebak",
"Stock" : 15
}
]
},
"recordId" : "1"
}
],
"dataInfo" :
{
"database" : "Favoriete bakker",
"foundCount" : 3,
"layout" : "Producten",
"returnedCount" : 1,
"table" : "Producten",
"totalRecordCount" : 6
}
}
}
Voorbeeld 5
Wijzigt op basis van de lay-out Producten de record die is opgegeven door de record-ID
, waarbij de waarden van de velden Voorraad en Naam worden bijgewerkt.
FileMaker Data API uitvoeren [ Selecteer ; Doel: $$result ;
JSONSetElement ( "{}" ;
[ "actie" ; "update" ; JSONString ] ;
[ "layouts" ; "Producten" ; JSONString ] ;
[ "recordID" ; "4" ; JSONString ] ;
[ "Gegevensveld" ; "{ \"Stock\" : 14 ,
\"Naam\" : \"Vanillecake, groot\" }" ; JSONObject ]
) ]
variabele instellen [ $$result ; JSONFormatElements ( $$result ) ]
De JSON-gegevens die worden geretourneerd in de algemene variabele $$result hebben deze vorm.
{
"berichten" :
[
{
"code" : "0",
"bericht" : "OK"
}
],
"antwoord" :
{
"modId" : "6"
}
}
Als de record die is opgegeven door record-ID
niet bestaat, rgeeft Get(LaatsteFout) 101 als resultaat en Get(DetailsLaatsteFout) retourneert "Record ontbreekt", wat hetzelfde is als de code
en het bericht
in $$result.
Voorbeeld 6
Maakt op basis van de lay-out Producten een record en stelt de waarden in van de velden Voorraad, ID en Naam. Omdat het veld ID is ingesteld op het automatisch invoeren van een serienummer en de optie Wijzigen van waarde tijdens gegevensinvoer verbieden is ingeschakeld, wordt de vereiste voor automatisch invoeren genegeerd als u de toets prohibitmode
instelt op script
in het object opties
. Het veld ID wordt ingesteld op de opgegeven waarde.
FileMaker Data API uitvoeren [ Selecteer ; Doel: $$result ;
JSONSetElement ( "{}" ;
[ "actie" ; "maken" ; JSONString ] ;
[ "lay-outs" ; "Producten" ; JSONString ] ;
[ "opties" ; "{ \"prohibitmode\" : \"script\" }" ; JSONObject ] ;
[ "fieldData" ; "{ \"Voorraad\" : 14 ,
\"ID\" : \"FB42\" ,
\"Naam\" : \"Croissants\" }" ; JSONObject ]
) ]
Variabele instellen [ $$result ; JSONFormatElements ( $$result ) ]
De JSON-gegevens die worden geretourneerd in de algemene variabele $$result hebben deze vorm.
{
"berichten" :
[
{
"code" : "0",
"bericht" : "OK"
}
],
"antwoord" :
{
"modId" : "0",
"recordId" : "7"
}
}
Als het ID-veld ook een validatie heeft die is ingesteld om een unieke waarde te vereisen en er al een record met de ID-waarde "FB42" bestaat, zou Get(LastError) 504 retourneren en zou Get(LastErrorDetail) "De waarde in het veld is niet uniek, zoals vereist is in de opties voor bevestigingsinvoer" retourneren, wat hetzelfde zou zijn als code
en bericht
in $$result.