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

action

"read"

read, metaData, create, update, delete und duplicate sind die unterstützten Werte. Verwenden Sie metaData, um Informationen über Tabellen und Layouts abzurufen. Verwenden Sie die anderen Werte, um Datensatzdaten zu bearbeiten.

version

"v1"

v1, v2 und vLatest werden unterstützt. Das Verhalten und die generierten Ergebnisse unterscheiden sich je nach API-Version.

layouts

 

Ein Layoutname.

tables

 

Der Name eines Tabellenauftretens. Erforderlich für die Tabellenauftretenaktionen metaData. Funktioniert wie der Schlüssel layouts. Wenn das Tabellenauftreten angegeben wird, werden die Metadaten für diese Tabelle zurückgegeben. Wenn kein Name angegeben wird, wird die Liste der Tabellenauftreten zurückgegeben.

query

alle Datensätze

Ein Array von JSON-Objekten, von denen jedes ein Feld und Suchkriterien angibt.

recordId

 

Die eindeutige ID-Nummer eines Datensatzes. Sie können nicht einen query- und einen recordId-Schlüssel gleichzeitig angeben.

sort

 

Ein JSON-Objekt, das die Sortierreihenfolge der Datensätze in der Tabelle des aktuellen Layouts angibt.

offset

1

Die Datensatznummer des ersten Datensatzes in einem Bereich an Datensätzen in der Tabelle des aktuellen Layouts.

limit

100

Die maximale Anzahl der Datensätze, die aus der Tabelle des aktuellen Layouts zurückgegeben werden sollen.

layout.response

Wert aus layouts

Um die Daten im Kontext eines anderen Layouts abzurufen, geben Sie einen Layoutnamen an.

portal

Alle Ausschnitte

Ein JSON-Objekt, das einen Ausschnitt angibt.

offset.portal-name

1

Die Datensatznummer des ersten Ausschnittsdatensatzes in einem Bereich an Bezugsdatensätzen. Für portal-name müssen Sie den Objektnamen des Ausschnitts angeben, falls er existiert, ansonsten den Namen der Bezugstabelle.

limit.portal-name

50

Die maximale Anzahl der zurückzugebenden Bezugsdatensätze. Für portal-name müssen Sie den Objektnamen des Ausschnitts angeben, falls er existiert, ansonsten den Namen der Bezugstabelle.

fieldData

 

Ein JSON-Objekt, das Datensatzdaten angibt, die erstellt oder aktualisiert werden sollen.

portalData

 

Ein JSON-Objekt, das Bezugsdatensatzdaten angibt, die erstellt oder aktualisiert werden sollen.

modId

 

(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.

"options":
{"entrymode":"Wert"}

"user"

(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 entrymode. Verwenden Sie Folgendes für Wert:

  • script: die Datenvalidierungsanforderungen eines Feldes ignorieren

  • user: die Datenvalidierungsanforderungen eines Feldes befolgen

Weitere Informationen finden Sie unter Definieren der Feldüberprüfung.

"options":
{"prohibitmode":"Wert"}

"user"

(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 prohibitmode. Verwenden Sie Folgendes für Wert:

  • script: die Anforderungen für das Definieren der automatischen Dateneingabe eines Feldes ignorieren

  • user: die Anforderungen für das Definieren der automatischen Dateneingabe eines Feldes befolgen

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 mit script. 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.

Kopieren
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.

Kopieren
{
    "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.

Kopieren
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.

Kopieren
{
    "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.

Kopieren
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.

Kopieren
{
    "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.

Kopieren
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.

Kopieren
{
    "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“.

Kopieren
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.

Kopieren
{
    "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.

Kopieren
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.

Kopieren
{
        "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.