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 en de gegevens te ontvangen in JSON-indeling. 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. Vereist voor de acties |
|
|
De naam van een tabelvermelding. Vereist voor |
|
all records |
Een matrix van JSON-objecten, die elk een veld en zoekcriteria opgeven. Raadpleeg "Een zoekopdracht uitvoeren" in de FileMaker Data API Handleiding. |
|
|
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. Raadpleeg "Een reeks records opvragen" en "Een zoekopdracht uitvoeren" in de FileMaker Data API Handleiding. |
|
|
Het recordnummer van de eerste record in een bereik van records in de tabel van de huidige lay-out. Raadpleeg "Een bepaalde record opvragen", "Een reeks records opvragen" en "Een zoekopdracht uitvoeren" in de FileMaker Data API Handleiding. |
|
|
Het maximum aantal records dat moet worden geretourneerd uit de tabel van de huidige lay-out. Raadpleeg "Een bepaalde record opvragen", "Een reeks records opvragen" en "Een zoekopdracht uitvoeren" in de FileMaker Data API Handleiding. |
|
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. Raadpleeg de FileMaker Data API Handleiding. |
|
all portals |
Een JSON-object dat een portaal aangeeft. Raadpleeg "Een bepaalde record opvragen", "Een reeks records opvragen" en "Een zoekopdracht uitvoeren" in de FileMaker Data API Handleiding. |
|
|
Het recordnummer van de eerste portaalrecord in een bereik van gerelateerde records. Voor |
|
50 |
Het maximum aantal gerelateerde records dat moet worden geretourneerd. Voor |
De volgende sleutels worden genegeerd:
-
databases
wordt genegeerd omdat het altijd de database is die hoort bij het venster waarin het script wordt uitgevoerd. -
Authorization
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. -
fieldData
,portalData
enmodId
worden genegeerd omdat acties voor maken en bijwerken niet worden ondersteund. -
script
en sleutels die beginnen metscript.
worden genegeerd. Als u een ander script wilt uitvoeren, gebruikt u de Script uitvoeren scriptstap.
Foutafhandeling
Nadat deze scriptstappen zijn uitgevoerd, geeft de functie Get(LaatsteFout) altijd 0 ("Geen fout") als resultaat, zelfs als er een fout is opgetreden. Dit wijkt af van het gedrag van andere scriptstappen. Als u wilt controleren op fouten, gebruikt u in plaats daarvan het JSON-resultaat in Doel
.
Het resultaat bevat ten minste een sleutel messages
met een object met daarin de sleutels message
en code
. 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.
Opmerkingen
-
Wanneer deze scriptstap wordt uitgevoerd, wordt er een bewerking uitgevoerd op een verborgen venster met behulp van de lay-out die in het verzoek is opgegeven. Het venster wordt gesloten nadat de resultaten zijn geretourneerd.
-
Scriptactiveringen en dialoogvenster voor foutrapportage zijn 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 [ Select ; Target: $$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
}
}
}