Utför FileMaker Data API
Utför en FileMaker Data API-förfrågan.
Tillval
-
Markera hela innehållet ersätter allt innehåll i fältet eller variabeln. Om du inte väljer det här alternativet:
-
För ett fält ersätts enbart den valda delen av det aktiva fältet, eller också infogas data vid inmatningspunkten. Den förvalda inmatningspunkten finns i slutet av fältets data.
-
För en variabel som inte innehåller containerdata infogas data i slutet av variabelns aktuella värde. För en variabel med containerdata ersätts innehållet i variabeln.
-
-
Mål anger det fält där resultatet ska infogas eller den variabel som ska anges. Om det inte finns någon variabel kommer detta scriptsteg att skapa en (mer information finns i Använda variabler).
-
Förfrågan är en beräkning som anger förfrågan som text. Texten är ett JSON-objekt i det format som beskrivs nedan.
Kompatibilitet
Produkt | Stöds |
---|---|
FileMaker Pro |
Ja |
FileMaker Go |
Ja |
FileMaker WebDirect |
Ja |
FileMaker Server |
Ja |
FileMaker Cloud |
Ja |
FileMaker Data API |
Ja |
Anpassad webbpublicering |
Ja |
Ursprungsversion
19.0
Beskrivning
FileMaker Data API är ett REST API som är tillgängligt som en webbtjänst för FileMaker Server och FileMaker Cloud. Webbapplikationer kan använda det här API:et för att skicka förfrågningar och ta emot data i JSON-format från delade FileMaker Pro-filer.
Med hjälp av samma underliggande funktion som FileMaker Data API mot FileMaker-värdar kan det här scriptsteget användas för att låta ett script som körs av en FileMaker-produkt efterfråga data i den aktuella filen, oavsett om den är delad eller inte, och ta emot dessa data i JSON-format. Det här scriptsteget gör inget webbtjänstanrop till en värd med hjälp av FileMaker Data API, och det är inte heller beroende av på om API:et är aktiverat på en värd. Den enda likheten mellan det här scriptsteget och FileMaker Data API är att JSON-formatet är detsamma för returnerade data. Förfrågan är ett enkelt JSON-objekt, i stället för den kombination av URL, huvud och frågetext som krävs av FileMaker Data API för att använda en FileMaker-värds webbtjänst. Resultatet som returneras i Mål har samma JSON-format som när det begärs från en värd via FileMaker Data API.
Förfrågans format
Det här scriptsteget har stöd för följande par av nyckel–värde i JSON-objektet som anges av tillvalet Förfrågan. Om en av dessa nycklar inte har angetts i förfrågan används standardvärdet.
Nyckel | Standardvärde | Beskrivning |
---|---|---|
|
|
|
|
|
|
|
|
Ett layoutnamn. |
|
|
Namnet på en tabellförekomst. Krävs för åtgärden |
|
all records |
En matris med JSON-objekt som vart och ett anger ett fält och sökvillkor. |
|
|
Det unika ID-numret för en post. Du kan inte ange både en |
|
|
Ett JSON-objekt som specificerar posters sorteringsordning i den aktuella layoutens tabell. |
|
|
Postnumret för den första posten i ett intervall av poster i den aktuella layoutens tabell. |
|
|
Det högsta antalet poster som ska returneras från den aktuella layoutens tabell. |
|
värde från |
Ange ett layoutnamn om du vill hämta data i en annan layouts kontext. |
|
all portals |
Ett JSON-objekt som anger en portal. |
|
|
Postnumret för den första portalposten i ett intervall av relaterade poster. För |
|
50 |
Det högsta antalet relaterade poster som ska returneras. För |
|
|
Ett JSON-objekt som anger postdata som ska skapas eller uppdateras. |
|
|
Ett JSON-objekt som anger relaterade postdata som ska skapas eller uppdateras. |
|
|
(Valfritt) För en uppdateringsåtgärd är det här modifierings-ID för posten som ska uppdateras. Om det inte matchar aktuellt modId för posten ändras inte posten. |
|
|
(Valfritt) När data skrivs ignorerar det här scriptsteget huruvida ett alternativet Tillåt att användaren åsidosätter kontrollen vid datainmatning har valts för ett fält och använder i stället värdet
Mer information finns i Definiera fältkontroll. |
|
|
(Valfritt) När data skrivs ignorerar det här scriptsteget huruvida alternativet Förhindra ändring av värdet vid datainmatning har valts för ett fält och använder i stället värdet
Mer information finns i Definiera automatisk inmatning av data. |
Mer information om nycklarna ovan finns i avsnitten Work with records (Arbeta med poster) samt Get metadata (Hämta metadata) och Perform av find request (Utföra en sökning) i FileMaker Data API Guide.
Följande nycklar ignoreras:
-
databases
ignoreras eftersom databasen alltid är den som tillhör det fönster där scriptet körs. -
Authorization
ignoreras eftersom scriptets behörighet antingen motsvarar den aktuella användarens eller full åtkomst om det aktuella scriptet har tilldelats fullständig behörighet. -
Content-Type
ignoreras eftersom förfrågan måste vara i JSON-format. -
script
och alla nycklar som börjar medscript.
ignoreras. Använd i stället Scriptsteget Utför script om du vill utföra ett annat script.
Felhantering
JSON-resultatet i Target innehåller som minst nyckeln messages
med ett objekt som innehåller nycklarna message
och code
. Värdena för code
är de som definieras i FileMaker-felkoder. De flesta värden för message
och code
är desamma som de som returneras av FileMaker Data API som är tillgänglig som webbtjänst från FileMaker-värdar. Det finns några ytterligare fel som är unika för det här scriptsteget och som hjälper till att identifiera problem vid tolkning av tillvalet Förfrågan. Dessa ytterligare fel använder värdena 3, 1708 och 1710 för code
, men många olika värden för message
med mer information om felet.
Funktionerna Get ( SenasteFel ) och Get ( SenasteFelDetalj ) returnerar samma värden som i nycklarna code
och message
. Get ( SenasteFelPlats ) returnerar var felet uppkom i scriptet.
Kommentarer
-
Det här scriptsteget körs i sin egen session, fristående från eventuella fönster eller script som körs, inklusive scriptet som utför det här scriptsteget. Använd därför det här scriptsteget som om du gör ett FileMaker Data API-anrop till en värd över nätverket. Scripttriggers och eventuella dialogrutor om rapporterade fel inaktiveras medan det här scriptsteget utförs.
-
Om filen delas med FileMaker Server eller FileMaker Cloud som värd är de returnerade värdena för containerfält URL:er som kan användas för att hämta fältinnehållet. Om filen har öppnats lokalt returneras endast filens namn i containerfältet.
Exempel 1
Returnerar metadata för alla tabellförekomster genom att inte ange något värde för nyckeln tables
. I det här fallet finns det en källtabell (eller bastabell), (Produkter) och två tabellförekomster (Produkter och Produkter_PåLager). I det här exemplet används Funktionen JSONSetElement för att skapa JSON-objektet i tillvalet Förfrågan
.
Utför FileMaker Data API [ Välj ; Mål: $$result ; JSONSetElement ( "{}" ;
[ "action" ; "metaData" ; JSONString ] ;
[ "tables" ; "" ; JSONString ]
) ]
Ange variabel [ $$result ; JSONFormatElements ( $$result ) ]
De JSON-data som returneras i den globala variabeln $$result har det här formatet.
{
"messages" :
[
{
"code" : "0",
"message" : "OK"
}
],
"response" :
{
"tables" :
[
{
"baseTable" : "Produkter",
"name" : "Produkter"
},
{
"baseTable" : "Produkter",
"name" : "Produkter_PåLager"
}
]
}
}
Exempel 2
Baserat på layouten Produkter returneras den första posten i tabellen som är associerad med layouten Produkter.
Utför FileMaker Data API [ Välj ; Mål: $$result ;
JSONSetElement ( "{}" ;
[ "layouts" ; "Produkter" ; JSONString ] ;
[ "limit" ; 1 ; JSONNumber ]
) ]
Ange variabel [ $$result ; JSONFormatElements ( $$result ) ]
De JSON-data som returneras i den globala variabeln $$result har det här formatet.
{
"messages" :
[
{
"code" : "0",
"message" : "OK"
}
],
"response" :
{
"data" :
[
{
"fieldData" :
{
"ID" : "FB1",
"Name" : "Munkar",
"Lager" : 43
},
"modId" : "6",
"portalData" : {},
"recordId" : "1"
}
],
"dataInfo" :
{
"database" : "Favoritbageri",
"foundCount" : 3,
"layout" : "Produkter",
"returnedCount" : 1,
"table" : "Produkter",
"totalRecordCount" : 3
}
}
}
Exempel 3
Utifrån layouten Produkter utförs en sökning efter poster där fältet Lager är mindre än 40 och returnerar sökresultatet sorterat efter fältet Lager i fallande ordning.
Utför FileMaker Data API [ Välj ; Mål: $$result ;
JSONSetElement ( "{}" ;
[ "layouts" ; "Produkter" ; JSONString ] ;
[ "query" ; "[ { \"Lager\":\"<40\" } ]" ; JSONArray ] ;
[ "sort" ; "[ { \"fieldName\":\"Lager\" ,
\"sortOrder\":\"descend\" } ]" ; JSONArray ]
) ]
Ange variabel [ $$result ; JSONFormatElements ( $$result ) ]
De JSON-data som returneras i den globala variabeln $$result har det här formatet.
{
"messages" :
[
{
"code" : "0",
"message" : "OK"
}
],
"response" :
{
"data" :
[
{
"fieldData" :
{
"ID" : "FB3",
"Name" : "Baguette",
"Lager" : 34
},
"modId" : "1",
"portalData" : {},
"recordId" : "7"
},
{
"fieldData" :
{
"ID" : "FB2",
"Name" : "Chokladtårta",
"Lager" : 23
},
"modId" : "1",
"portalData" : {},
"recordId" : "6"
}
],
"dataInfo" :
{
"database" : "Favoritbageri",
"foundCount" : 2,
"layout" : "Produkter",
"returnedCount" : 2,
"table" : "Produkter",
"totalRecordCount" : 3
}
}
}
Exempel 4
Returnerar, baserat på layouten Produkter, den första posten i den tabell som är kopplad till layouten Produkter och, om det finns portalrader, returnerar de första 2 posterna sedan de första 2 har hoppat över.
Utför FileMaker Data API [ Välj ; Mål: $$result ;
JSONSetElement ( "{}" ;
[ "layouts" ; "Produkter" ; JSONString ] ;
[ "limit" ; 1 ; JSONNumber ] ;
[ "limit.RelatedProducts" ; 2; JSONNumber ] ;
[ "offset.RelatedProducts" ; 2 ; JSONNumber ]
) ]
Ange variabel [ $$result ; JSONFormatElements ( $$result ) ]
De JSON-data som returneras i den globala variabeln $$result har det här formatet.
{
"messages" :
[
{
"code" : "0",
"message" : "OK"
}
],
"response" :
{
"data" :
[
{
"fieldData" :
{
"ID" : "FB1",
"Name" : "Munkar",
"Lager" : 43
},
"modId" : "6",
"portalData" : {
"RelatedProducts" :
[
{
"ID" : "FB4",
"Name" : "Munkhål",
"Lager" : 53
},
{
"ID" : "FB5",
"Name" : "Mördegskaka",
"Lager" : 15
}
]
},
"recordId" : "1"
}
],
"dataInfo" :
{
"database" : "Favoritbageri",
"foundCount" : 3,
"layout" : "Produkter",
"returnedCount" : 1,
"table" : "Produkter",
"totalRecordCount" : 6
}
}
}
Exempel 5
Baserat på layouten Produkter ändras posten som specificeras av recordId
och uppdaterar värdena i fälten Lager och Namn.
Utför FileMaker Data API [ Välj ; Mål: $$result ;
JSONSetElement ( "{}" ;
[ "action" ; "update" ; JSONString ] ;
[ "layouts" ; "Products" ; JSONString ] ;
[ "recordId" ; "4" ; JSONString ] ;
[ "fieldData" ; "{ \"Lager\" : 14 ,
\"Namn\" : \"Vaniljtårta, stor\" }" ; JSONObject ]
) ]
Ange variabel [ $$result ; JSONFormatElements ( $$result ) ]
De JSON-data som returneras i den globala variabeln $$result har det här formatet.
{
"messages" :
[
{
"code" : "0",
"message" : "OK"
}
],
"response" :
{
"modId" : "6"
}
}
Om posten som specificeras av recordId
inte finns skulle Get ( SenasteFel ) returnera 101 och Get ( SenasteFelDetalj ) skulle returnera "Posten saknas", vilket blir samma som code
och message
i $$result.
Exempel 6
Baserat på layouten Produkter skapas en post och värden anges i fälten Lager, ID och Namn. Eftersom fältet ID är inställt på att automatiskt ange ett serienummer och alternativet Förhindra ändring av värde under datainmatning är aktiverat, ohc om du anger nyckeln prohibitmode
till script
i objektet options
åsidosätts kravet på automatiskt inmatning och fältet ID anges enligt specifikationen.
Utför FileMaker Data API [ Välj ; Mål: $$resultat ;
JSONSetElement ( "{}" ;
[ "action" ; "create" ; JSONString ] ;
[ "layouts" ; "Produkter" ; JSONString ] ;
[ "options" ; "{ \"prohibitmode\" : \"script\" }" ; JSONObject ] ;
[ "fieldData" ; "{ \"Lager\" : 14 ,
\"ID\" : \"FB42\" ,
\"Name\" : \"Croissanter\" }" ; JSONObject ]
) ]
Ange variabel [ $$resultat ; JSONFormatElements ( $$resultat ) ]
De JSON-data som returneras i den globala variabeln $$result har det här formatet.
{
"messages" :
[
{
"code" : "0",
"message" : "OK"
}
],
"response" :
{
"modId" : "0",
"recordId" : "7"
}
}
Om fältet ID även hade validering inställd på att kräva ett unikt värde och det redan fanns en post med ID-värdet "FB42”, skulle Get ( SenasteFel ) returnera 504 och Get ( SenasteFelDetalj ) skulle returnera "Värdet i fältet är inte unikt, vilket angetts som ett krav i kontrolltillvalen". Det motsvarar alltså code
och message
i $$resultat.