Exécuter FileMaker Data API

Exécute une requête FileMaker Data API.

Options 

  • Sélectionner tout le contenu remplace l'intégralité du contenu d'une rubrique ou d'une variable. Si vous ne sélectionnez pas cette option :

    • Dans le cas d'une rubrique, cette action remplace uniquement la partie sélectionnée de la rubrique active ou insère des données au point d'insertion. Par défaut, le point d'insertion se situe à la fin des données de la rubrique.

    • Dans le cas d'une variable qui ne contient aucune donnée de type Conteneur, cette action insère des données à la fin de la valeur actuelle de la variable. Dans le cas d'une variable qui contient des données de type Conteneur, cette action remplace son contenu.

  • Cible indique la rubrique dans laquelle insérer le résultat ou la variable à définir. Si la variable n'existe pas, cette action de script en crée une (consultez la section Utilisation de variables).

  • Requête est un calcul qui indique la requête sous forme de texte. Le texte est un objet JSON au format décrit ci-dessous.

Compatibilité 

Produit Prise en charge

FileMaker Pro

Oui

FileMaker Go

Oui

FileMaker WebDirect

Oui

FileMaker Server

Oui

FileMaker Cloud

Oui

FileMaker Data API

Oui

Publication Web personnalisée

Oui

Provient de la version 

19.0

Description 

FileMaker Data API est une API REST disponible sous forme de service Web pour FileMaker Server et FileMaker Cloud. Les applications Web peuvent utiliser cette API pour envoyer des requêtes et recevoir des données au format JSON de fichiers FileMaker Pro hébergés.

Utilisant la même fonctionnalité sous-jacente que FileMaker Data API sur les hôtes FileMaker, cette action de script permet à tout produit FileMaker d'exécuter un script pour demander des données du fichier actif et les recevoir au format JSON. La requête est un simple objet JSON, au lieu de la combinaison d'une URL, d'un en-tête et d'un corps de requête requise par FileMaker Data API pour utiliser le service Web d'un hôte FileMaker. Le résultat renvoyé dans Cible est au même format JSON que lorsqu'il est demandé depuis un hôte via FileMaker Data API.

Format de requête

Cette action de script prend en charge les paires clé-valeur suivantes dans l'objet JSON spécifié par l'option Requête. Si l'une des ces clés n'est pas spécifiée dans la requête, la valeur par défaut est utilisée.

Clé Valeur par défaut Description

action

"read"

Les valeurs read et metaData sont les seules prises en charge. Utilisez metaData pour récupérer des informations sur les tables et les modèles.

version

"v1"

Les valeurs v1, v2 et vLatest sont prises en charge. Le comportement et les résultats générés diffèrent selon la version API. Consultez le Guide de FileMaker Data API.

layouts

 

Un nom de modèle. Requis pour les actions read et metaData de modèle.

tables

 

Un nom d'occurrence de table. Requis pour les actions metaData d'occurrence de table. Fonctionne comme la clé layouts. Si l'occurrence de table est spécifiée, les métadonnées de cette table sont renvoyées. Si aucun nom n'est spécifié, la liste des occurrences de table est renvoyée.

query

tous les enregistrements

Un tableau d'objets JSON, chacun spécifiant une rubrique et des critères de recherche. Consultez la section « Effectuer une requête de recherche » du Guide de FileMaker Data API.

recordId

 

L'ID (numéro d'identification) unique d'un enregistrement. Vous ne pouvez pas spécifier à la fois une clé query et une clé recordId. Consultez le Guide de FileMaker Data API.

sort

 

Un objet JSON qui spécifie l'ordre de tri des enregistrements dans la table du modèle actif. Consultez les sections « Obtenir une plage d'enregistrements » et « Effectuer une requête de recherche » du Guide de FileMaker Data API.

offset

1

Le numéro d'enregistrement du premier enregistrement dans une plage d'enregistrements de la table du modèle actif. Consultez les sections « Obtenir un seul enregistrement », « Obtenir une plage d'enregistrements » et « Effectuer une requête de recherche » du Guide de FileMaker Data API.

limit

100

Le nombre maximum d'enregistrements à renvoyer de la table du modèle actif. Consultez les sections « Obtenir un seul enregistrement », « Obtenir une plage d'enregistrements » et « Effectuer une requête de recherche » du Guide de FileMaker Data API.

layout.response

valeur de layouts

Spécifiez un nom de modèle pour récupérer les données dans le cadre d'un autre modèle. Consultez le Guide de FileMaker Data API.

portal

toutes les tables externes

Un objet JSON qui spécifie une table externe. Consultez les sections « Obtenir un seul enregistrement », « Obtenir une plage d'enregistrements » et « Effectuer une requête de recherche » du Guide de FileMaker Data API.

offset.nom-table-externe

1

Le numéro d'enregistrement du premier enregistrement de la table externe dans une plage d'enregistrements liés. Pour nom-table-externe, vous devez spécifier le nom d'objet de la table externe, s'il existe, sinon le nom de la table liée. Consultez les sections « Obtenir un seul enregistrement », « Obtenir une plage d'enregistrements » et « Effectuer une requête de recherche » du Guide de FileMaker Data API.

limit.nom-table-externe

50

Le nombre maximum d'enregistrements liés à renvoyer. Pour nom-table-externe, vous devez spécifier le nom d'objet de la table externe, s'il existe, sinon le nom de la table liée. Consultez les sections « Obtenir un seul enregistrement », « Obtenir une plage d'enregistrements » et « Effectuer une requête de recherche » du Guide de FileMaker Data API.

Les clés suivantes sont ignorées :

  • La clé databases est ignorée car la base de données est toujours celle appartenant à la fenêtre dans laquelle est exécuté le script.

  • La clé Authorization est ignorée car les privilèges du script sont ceux de l'utilisateur actif ou d'accès intégral, si le script actif s'est vu accordé des privilèges d'accès intégral.

  • La clé Content-Type est ignoré car la requête doit être au format JSON.

  • Les clés fieldData, portalData et modId sont ignorés car les actions « create » et « update » ne sont pas prises en charge.

  • La clé script et toute clé commençant par script. sont ignorées. Pour exécuter un autre script,utilisez l'action de script Exécuter script.

Gestion des erreurs

Après l'exécution de cette action de script, la fonction Obtenir ( DernièreErreur ) renvoie toujours 0 (« Aucune erreur »), même s'il y a une erreur, contrairement aux autres actions de script. Pour rechercher les erreurs, utilisez plutôt le résultat JSON dans Cible.

Le résultat contient au moins une clé messages avec un objet contenant les clés message et code. Les valeurs de clé code sont celles définies dans la section Codes d'erreur FileMaker. La plupart des valeurs de clé message et code sont identiques à celles renvoyées par FileMaker Data API disponible sous forme de service Web sur les hôtes FileMaker. Certaines erreurs supplémentaires sont propres à cette action de script et permettent d'identifier les problèmes lors de l'analyse de l'option Requête. Ces erreurs supplémentaires utilisent les valeurs de clé code de 3, 1708 et 1710 mais différentes valeurs de clé message pour fournir plus d'informations sur l'erreur.

Remarques 

  • Lorsque cette action de script est exécutée, une fenêtre masquée s'ouvre où elle utilise le modèle spécifié dans la requête. La fenêtre se ferme une fois les résultats renvoyés.

  • Les boîtes de dialogue Déclencheurs de script et Rapports d'erreur sont désactivées lorsque cette action de script est exécutée.

  • Si le fichier est hébergé par FileMaker Server ou FileMaker Cloud, les valeurs renvoyées des rubriques Conteneur sont des URL pouvant être utilisées pour récupérer le contenu de rubrique. Si le fichier est ouvert en local, seul le nom du fichier dans la rubrique Conteneur est renvoyé.

Exemple 1 

Renvoie les métadonnées de toutes les occurrences de table en ne spécifiant aucun valeur pour la clé tables. Dans ce cas, il y a une table source ou de base (Produits) et deux occurrences de table (Produits et Produits_EnStock). Cet exemple utilise la fonction JSONSetElement pour créer l'objet JSON dans l'option Requête.

Copier
Exécuter FileMaker Data API [ Sélectionner ; Cible: $$result ; 
JSONSetElement ( "{}" ; 
    [ "action" ; "metaData" ; JSONString ] ; 
    [ "tables" ; "" ; JSONString ]
 ) ] 
Définir variable [ $$result ; JSONFormatElements ( $$result ) ]

Les données JSON renvoyées dans la variable globale $$result ont ce format.

Copier
{
    "messages"
    [
        {
            "code" : "0",
            "message" : "OK"
        }
    ],
    "response"
    {
        "tables"
        [
            {
                "baseTable" : "Produits",
                "name" : "Produits"
            },
            {
                "baseTable" : "Produits",
                "name" : "Produits_EnStock"
            }
        ]
    }
}

Exemple 2 

Renvoie le premier enregistrement de la table associée au modèle Produits, en fonction de celui-ci.

Copier
Exécuter FileMaker Data API [ Sélectionner ; Cible: $$result ;
JSONSetElement ( "{}" ;
    [ "layouts" ; "Produits" ; JSONString ] ;
    [ "limit" ; 1 ; JSONNumber ]
) ]
    Définir variable [ $$result ; JSONFormatElements ( $$result ) ]

Les données JSON renvoyées dans la variable globale $$result ont ce format.

Copier
{
    "messages"
    [
        {
            "code" : "0",
            "message" : "OK"
        }
    ],
    "response"
    {
        "data"
        [
            {
                "fieldData"
                {
                    "ID" : "FB1",
                    "Name" : "Donuts",
                    "Stock" : 43
                },
                "modId" : "6",
                "portalData" : {},
                "recordId" : "1"
            }
        ],
        "dataInfo"
        {
            "database" : "Boulangerie préférée",
            "foundCount" : 3,
            "layout" : "Produits",
            "returnedCount" : 1,
            "table" : "Produits",
            "totalRecordCount" : 3
        }
    }
}

Exemple 3 

En fonction du modèle Produits, effectue une recherche d'enregistrements où la rubrique Stock est inférieure à 40, et renvoie le jeu d'enregistrements trouvés trié par ordre décroissant selon la rubrique Stock.

Copier
Exécuter FileMaker Data API [ Sélectionner ; Cible: $$result ;
JSONSetElement ( "{}" ;
    [ "layouts" ; "Produits" ; JSONString ] ;
    [ "query" ; "[ { \"Stock\":\"<40\" } ]" ; JSONArray ] ;
    [ "sort" ; "[ { \"fieldName\":\"Stock\" ,
                    \"sortOrder\":\"descend\" } ]" ; JSONArray ]
) ]
Définir variable [ $$result ; JSONFormatElements ( $$result ) ]

Les données JSON renvoyées dans la variable globale $$result ont ce format.

Copier
{
    "messages"
    [
        {
            "code" : "0",
            "message" : "OK"
        }
    ],
    "response"
    {
        "data"
        [
            {
                "fieldData"
                {
                    "ID" : "FB3",
                    "Name" : "Baguette",
                    "Stock" : 34
                },
                "modId" : "1",
                "portalData" : {},
                "recordId" : "7"
            },
            {
                "fieldData"
                {
                    "ID" : "FB2",
                    "Name" : "Gâteau au chocolat",
                    "Stock" : 23
                },
                "modId" : "1",
                "portalData" : {},
                "recordId" : "6"
            }
        ],
        "dataInfo"
        {
            "database" : "Boulangerie préférée",
            "foundCount" : 2,
            "layout" : "Produits",
            "returnedCount" : 2,
            "table" : "Produits",
            "totalRecordCount" : 3
        }
    }
}

Exemple 4 

En fonction du modèle Produits, renvoie le premier enregistrement de la table associée à celui-ci et, en cas de rangées de table externe, renvoie les deux premiers enregistrements après avoir ignoré les deux premiers.

Copier
Exécuter FileMaker Data API [ Sélectionner; Cible: $$result ;
JSONSetElement ( "{}" ;
    [ "layouts" ; "Produits" ; JSONString ] ;
    [ "limit" ; 1 ; JSONNumber ] ;
    [ "limit.RelatedProducts" ; 2; JSONNumber ] ;
    [ "offset.RelatedProducts" ; 2 ; JSONNumber ]
) ]
Définir variable [ $$result ; JSONFormatElements ( $$result ) ]

Les données JSON renvoyées dans la variable globale $$result ont ce format.

Copier
{
    "messages"
    [
        {
            "code" : "0",
            "message" : "OK"
        }
    ],
    "response"
    {
        "data"
        [
            {
                "fieldData"
                {
                    "ID" : "FB1",
                    "Name" : "Donuts",
                    "Stock" : 43
                },
                "modId" : "6",
                "portalData" : {
                    "RelatedProducts" :
                    [
                        {
                            "ID" : "FB4",
                            "Name" : "Beignets",
                            "Stock" : 53
                        },
                        {
                            "ID" : "FB5",
                            "Name" : "Short Cake",
                            "Stock" : 15
                        }
                    ]
                },
                "recordId" : "1"
            }
        ],
        "dataInfo"
        {
            "database" : "Boulangerie préférée",
            "foundCount" : 3,
            "layout" : "Produits",
            "returnedCount" : 1,
            "table" : "Produits",
            "totalRecordCount" : 6
        }
    }
}