FileMaker Data API ausführen
Führt eine FileMaker Data API-Request aus.
Optionen
-
Gesamten Inhalt auswählen ersetzt den Inhalt eines Felds oder einer Variablen. Wenn Sie diese Option nicht wählen:
-
Für ein Feld wird nur der ausgewählte Teil des aktiven Felds ersetzt oder Daten werden an der Einfügeposition eingefügt. Die Standard-Einfügeposition befindet sich am Ende der Felddaten.
-
Für eine Variable, die über keine Containerdaten verfügt, werden Daten am Ende des aktuellen Werts der Variablen eingefügt. Für eine Variable mit Containerdaten wird der Inhalt der Variablen ersetzt.
-
-
Ziel gibt das Feld an, in das das Ergebnis bzw. die festzulegende Variable eingesetzt werden soll. Wenn die Variable nicht existiert, wird sie durch diesen Scriptschritt erstellt (siehe Verwenden von Variablen).
-
Anfrage ist eine Formel, die die Anfrage als Text angibt. Der Text ist ein JSON-Objekt in dem unten beschriebenen Format.
Kompatibilität
Produkt | Unterstützt |
---|---|
FileMaker Pro |
Ja |
FileMaker Go |
Ja |
FileMaker WebDirect |
Ja |
FileMaker Server |
Ja |
FileMaker Cloud |
Ja |
FileMaker Data API |
Ja |
Custom Web Publishing |
Ja |
Ursprung in Version
19.0
Beschreibung
Das FileMaker Data API ist ein REST-API, das als Webdienst für FileMaker Server und FileMaker Cloud verfügbar ist. Webanwendungen können dieses API verwenden, um Anfragen zu senden und Daten im JSON-Format von bereitgestellten FileMaker Pro-Dateien zu empfangen.
Dieser Scriptschritt verwendet dieselbe zugrunde liegende Funktionalität wie FileMaker Data API auf FileMaker-Hosts und ermöglicht es einem von einem beliebigen FileMaker-Produkt ausgeführten Script, Daten in der aktuellen Datei (ob bereitgestellt oder nicht) anzufordern und die Daten im JSON-Format zu empfangen. Dieser Scriptschritt ruft keinen Webdienst über FileMaker Data API bei einem Host auf und ist auch nicht davon abhängig, ob das API auf einem Host aktiviert ist. Die Ähnlichkeit zwischen diesem Scriptschritt und FileMaker Data API besteht lediglich darin, dass das JSON-Format der zurückgegebenen Daten gleich ist. Die Anforderung ist ein einfaches JSON-Objekt und nicht die Kombination aus URL, Header und Anforderungstext, die das FileMaker Data API benötigt, um den Webdienst eines FileMaker-Hosts zu verwenden. Das in Ziel zurückgegebene Ergebnis ist das gleiche JSON-Format wie bei einer Anfrage eines Hosts über das FileMaker Data API.
Anfrageformat
Dieser Scriptschritt unterstützt die folgenden Schlüssel/Wertpaare im JSON-Objekt, das durch die Option request angegeben wird. Wenn einer dieser Schlüssel in der Anforderung nicht angegeben ist, wird der Standardwert verwendet.
Taste | Standardwert | Beschreibung |
---|---|---|
|
|
|
|
|
|
|
|
Ein Layoutname. |
|
|
Der Name eines Tabellenauftretens. Erforderlich für die Tabellenauftretenaktionen |
|
alle Datensätze |
Ein Array von JSON-Objekten, von denen jedes ein Feld und Suchkriterien angibt. |
|
|
Die eindeutige ID-Nummer eines Datensatzes. Sie können nicht einen |
|
|
Ein JSON-Objekt, das die Sortierreihenfolge der Datensätze in der Tabelle des aktuellen Layouts angibt. |
|
|
Die Datensatznummer des ersten Datensatzes in einem Bereich an Datensätzen in der Tabelle des aktuellen Layouts. |
|
|
Die maximale Anzahl der Datensätze, die aus der Tabelle des aktuellen Layouts zurückgegeben werden sollen. |
|
Wert aus |
Um die Daten im Kontext eines anderen Layouts abzurufen, geben Sie einen Layoutnamen an. |
|
Alle Ausschnitte |
Ein JSON-Objekt, das einen Ausschnitt angibt. |
|
|
Die Datensatznummer des ersten Ausschnittsdatensatzes in einem Bereich an Bezugsdatensätzen. Für |
|
50 |
Die maximale Anzahl der zurückzugebenden Bezugsdatensätze. Für |
|
|
Ein JSON-Objekt, das Datensatzdaten angibt, die erstellt oder aktualisiert werden sollen. |
|
|
Ein JSON-Objekt, das Bezugsdatensatzdaten angibt, die erstellt oder aktualisiert werden sollen. |
|
|
(Optional) Bei einer Aktualisierungsaktion die Änderungs-ID des zu aktualisierenden Datensatzes. Wenn diese nicht mit der aktuellen modId des Datensatzes übereinstimmt, wird der Datensatz nicht geändert. |
|
|
(Optional) Beim Schreiben von Daten ignoriert dieser Scriptschritt, ob die Option Benutzer darf Überprüfung bei Dateneingabe umgehen eines Feldes ausgewählt ist, und verwendet stattdessen den Wert von
Weitere Informationen finden Sie unter Definieren der Feldüberprüfung. |
|
|
(Optional) Beim Schreiben von Daten ignoriert dieser Scriptschritt, ob die Option Keine Veränderung des Werts bei der Dateneingabe eines Feldes ausgewählt ist, und verwendet stattdessen den Wert für
Weitere Informationen finden Sie unter Definieren von automatischer Dateneingabe. |
Weitere Informationen zu den oben aufgeführten Schlüsseln finden Sie in den Themen unter „Arbeiten mit Datensätzen“ sowie „Metadaten abrufen“ und „Suchen“ im Handbuch FileMaker Data API.
Folgende Schlüssel werden ignoriert:
-
databases
wird ignoriert, weil die Datenbank immer diejenige ist, die zu dem Fenster gehört, in dem das Script ausgeführt wird. -
Authorization
wird ignoriert, weil die Berechtigungen des Scripts entweder die des aktuellen Benutzers oder Vollzugriff sind, falls dem aktuellen Script volle Zugriffsrechte gewährt wurden. -
Content-Type
wird ignoriert, weil die Anfrage im JSON-Format vorliegen muss. -
script
und alle mitscript.
beginnenden Schlüssel werden ignoriert. Um ein weiteres Script auszuführen, verwenden Sie stattdessen den Scriptschritt „Script ausführen“.
Fehlerbehandlung
Das JSON-Ergebnis in Ziel enthält mindestens einen Schlüssel messages
mit einem Objekt, das die Schlüssel message
und code
enthält. Die code
-Werte werden in FileMaker-Fehlercodes definiert. Die meisten message
- und code
-Werte sind die gleichen wie jene, die vom FileMaker Data API zurückgegeben werden und als Webdienst auf FileMaker-Hosts verfügbar sind. Einige zusätzliche Fehler sind nur bei diesem Scriptschritt vorhanden und helfen, Probleme beim Analysieren der Anfrage-Option zu identifizieren. Diese zusätzlichen Fehler verwenden code
-Werte von 3, 1708 und 1710, verwenden aber viele verschiedene message
-Werte, um mehr Details über den Fehler zu liefern.
Die Funktionen Hole ( LetzteFehlerNr ) und Hole ( LetzteFehlerNrDetail ) geben die gleichen Werte zurück wie in den Schlüsseln code
bzw. message
. Hole ( LetzteFehlerNrPosition ) gibt die Fehlerstelle im Script zurück.
Hinweise
-
Dieser Scriptschritt wird in einer eigenen Sitzung ausgeführt, und zwar unabhängig vom Kontext eines Fensters oder ausgeführten Scripts, einschließlich des Scripts, das diesen Scriptschritt ausführt. Verwenden Sie diesen Scriptschritt daher so, als würden Sie einen FileMaker Data API-Aufruf an einen Host über das Netzwerk durchführen. Script-Trigger und Dialogfelder für die Fehlerberichterstattung sind während der Ausführung dieses Scriptschritts deaktiviert.
-
Wenn die Datei von FileMaker Server oder FileMaker Cloud bereitgestellt wird, sind die Rückgabewerte von Medienfeldern URLs, die zum Abrufen des Feldinhalts verwendet werden können. Wenn die Datei lokal geöffnet ist, wird nur der Name der Datei im Medienfeld zurückgegeben.
Beispiel 1
Gibt Metadaten für alle Tabellenauftreten an, indem kein Wert für den Schlüssel tables
angegeben wird. In diesem Fall gibt es eine Quell- (oder Basis-) Tabelle (Produkte) und zwei Tabellenauftreten (Produkte und Produkte_Vorrätig). Dieses Beispiel verwendet die Funktion „JSONSetElement“, um das JSON-Objekt in der Anfrage
-Option zu erstellen.
FileMaker Data API ausführen [ Auswahl ; Ziel: $$Ergebnis ;
JSONSetElement ( "{}" ;
[ "action" ; "metaData" ; JSONString ] ;
[ "tables" ; "" ; JSONString ]
) ]
Variable setzen [ $$Ergebnis ; JSONFormatElements ( $$Ergebnis ) ]
Die in der globalen Variable $$Ergebnis zurückgegebenen JSON-Daten haben dieses Format.
{
"messages" :
[
{
"code" : "0",
"message" : "OK"
}
],
"response" :
{
"tables" :
[
{
"baseTable" : "Produkte",
"name" : "Produkte"
},
{
"baseTable" : "Produkte",
"name" : "Produkte_Vorrätig"
}
]
}
}
Beispiel 2
Gibt auf Basis des Layouts „Produkte“ den ersten Datensatz in der mit dem Layout „Produkte“ verbundenen Tabelle zurück.
FileMaker Data API ausführen [ Auswahl ; Ziel: $$Ergebnis ;
JSONSetElement ( "{}" ;
[ "layouts" ; "Produkte" ; JSONString ] ;
[ "limit" ; 1 ; JSONNumber ]
) ]
Variable setzen [ $$Ergebnis ; JSONFormatElements ( $$Ergebnis ) ]
Die in der globalen Variable $$Ergebnis zurückgegebenen JSON-Daten haben dieses Format.
{
"messages" :
[
{
"code" : "0",
"message" : "OK"
}
],
"response" :
{
"data" :
[
{
"fieldData" :
{
"ID" : "LB1",
"Name" : "Donuts",
"Bestand" : 43
},
"modId" : "6",
"portalData" : {},
"recordId" : "1"
}
],
"dataInfo" :
{
"database" : "Lieblingsbäckerei",
"foundCount" : 3,
"layout" : "Produkte",
"returnedCount" : 1,
"table" : "Produkte",
"totalRecordCount" : 3
}
}
}
Beispiel 3
Führt auf Basis des Layouts „Produkte“ eine Suche nach Datensätzen durch, bei denen der Wert des Felds „Bestand“ unter 40 liegt, und gibt die Ergebnismenge sortiert nach dem Feld „Bestand“ in absteigender Reihenfolge zurück.
FileMaker Data API ausführen [ Auswahl ; Ziel: $$Ergebnis ;
JSONSetElement ( "{}" ;
[ "layouts" ; "Produkte" ; JSONString ] ;
[ "query" ; "[ { \"Bestand\":\"<40\" } ]" ; JSONArray ] ;
[ "sort" ; "[ { \"fieldName\":\"Bestand\" ,
\"sortOrder\":\"descend\" } ]" ; JSONArray ]
) ]
Variable setzen [ $$Ergebnis ; JSONFormatElements ( $$Ergebnis ) ]
Die in der globalen Variable $$Ergebnis zurückgegebenen JSON-Daten haben dieses Format.
{
"messages" :
[
{
"code" : "0",
"message" : "OK"
}
],
"response" :
{
"data" :
[
{
"fieldData" :
{
"ID" : "LB3",
"Name" : "Baguette",
"Bestand" : 34
},
"modId" : "1",
"portalData" : {},
"recordId" : "7"
},
{
"fieldData" :
{
"ID" : "LB2",
"Name" : "Schokoladenkuchen",
"Bestand" : 23
},
"modId" : "1",
"portalData" : {},
"recordId" : "6"
}
],
"dataInfo" :
{
"database" : "Lieblingsbäckerei",
"foundCount" : 2,
"layout" : "Produkte",
"returnedCount" : 2,
"table" : "Produkte",
"totalRecordCount" : 3
}
}
}
Beispiel 4
Gibt auf der Grundlage des Layouts „Produkte“ den ersten Datensatz in der Tabelle zurück, die mit dem Layout „Produkte“ verknüpft ist, und gibt, wenn es Ausschnittreihen gibt, die ersten 2 Datensätze zurück, nachdem die ersten 2 übersprungen wurden.
FileMaker Data API ausführen [ Auswahl ; Ziel: $$Ergebnis ; JSONSetElement ( "{}" ;
[ "layouts" ; "Produkte" ; JSONString ] ;
[ "limit" ; 1 ; JSONNumber ] ;
[ "['limit.RelatedProducts']" ; 2; JSONNumber ] ;
[ "['offset.RelatedProducts']" ; 2 ; JSONNumber ]
) ]
Variable setzen [ $$Ergebnis ; JSONFormatElements ( $$Ergebnis ) ]
Die in der globalen Variable $$Ergebnis zurückgegebenen JSON-Daten haben dieses Format.
{
"messages" :
[
{
"code" : "0",
"message" : "OK"
}
],
"response" :
{
"data" :
[
{
"fieldData" :
{
"ID" : "LB1",
"Name" : "Donuts",
"Bestand" : 43
},
"modId" : "6",
"portalData" : {
"VerwandteProdukte" :
[
{
"ID" : "LB4",
"Name" : "Donutlöcher",
"Bestand" : 53
},
{
"ID" : "LB5",
"Name" : "Küchlein",
"Bestand" : 15
}
]
},
"recordId" : "1"
}
],
"dataInfo" :
{
"database" : "Lieblingsbäckerei",
"foundCount" : 3,
"layout" : "Produkte",
"returnedCount" : 1,
"table" : "Produkte",
"totalRecordCount" : 6
}
}
}
Beispiel 5
Ändert basierend auf dem Layout „Produkte“ den durch recordId
angegebenen Datensatz und aktualisiert die Werte der Felder „Bestand“ und „Name“.
FileMaker Data API ausführen [ Auswahl ; Ziel: $$Ergebnis ;
JSONSetElement ( "{}" ;
[ "action" ; "Aktualisieren" ; JSONString ] ;
[ "layouts" ; "Produkte" ; JSONString ] ;
[ "recordId" ; "4" ; JSONString ] ;
[ "fieldData" ; "{ \"Bestand\" : 14 ,
\"Name\" : \"Vanillekuchen, groß\" }" ; JSONObject ]
) ]
Variable setzen [ $$Ergebnis ; JSONFormatElements ( $$Ergebnis ) ]
Die in der globalen Variable $$Ergebnis zurückgegebenen JSON-Daten haben dieses Format.
{
"messages" :
[
{
"code" : "0",
"message" : "OK"
}
],
"response" :
{
"modId" : "6"
}
}
Wenn der durch recordId
angegebene Datensatz nicht existiert, gibt „Hole ( LetzteFehlerNr )“ den Fehler 101 zurück und „Hole ( LetzteFehlerNrDetail )“ die Nachricht „Datensatz fehlt“. Dies entspricht der Ausgabe von code
und message
in $$Ergebnis.
Beispiel 6
Erstellt auf der Grundlage des Produktlayouts einen Datensatz und legt die Werte für die Felder „Bestand“, „ID“ und „Name“ fest. Da das ID-Feld auf die automatische Eingabe einer fortlaufenden Nummer eingestellt ist und die Option Keine Veränderung des Werts bei der Dateneingabe aktiviert ist, wird durch das Festlegen des Schlüssels prohibitmode
auf script
im Objekt options
diese Anforderung der automatischen Eingabe überschrieben und das ID-Feld wie angegeben festgelegt.
FileMaker Data API ausführen [ Auswahl ; Ziel: $$Ergebnis ;
JSONSetElement ( "{}" ;
[ "action" ; "create" ; JSONString ] ;
[ "layouts" ; "Produkte" ; JSONString ] ;
[ "options" ; "{ \"prohibitmode\" : \"script\" }" ; JSONObject ] ;
[ "fieldData" ; "{ \"Bestand\" : 14 ,
\"ID\" : \"FB42\" ,
\"Name\" : \"Croissants\" }" ; JSONObject ]
) ]
Variable setzen [ $$Ergebnis ; JSONFormatElements ( $$Ergebnis ) ]
Die in der globalen Variable $$Ergebnis zurückgegebenen JSON-Daten haben dieses Format.
{
"messages" :
[
{
"code" : "0",
"message" : "OK"
}
],
"response" :
{
"modId" : "0",
"recordId" : "7"
}
}
Wenn für das ID-Feld auch die Validierung auf einen eindeutigen Wert festgelegt wäre und bereits ein Datensatz mit dem ID-Wert „FB42“ vorhanden wäre, würde „Hole ( LetzteFehlerNr )“ 504 zurückgeben und „Hole ( LetzteFehlerNrDetail )“ würde „Feldwert ist nicht eindeutig, wie in den Eingabeüberprüfungsoptionen festgelegt“ zurückgeben, was code
und message
in $$Ergebnis entsprechen würde.