Exécuter FileMaker Data API
Exécute une requête FileMaker Data API.
Voir aussi
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 (hébergé ou non) et les recevoir au format JSON. Cette action de script ne fait pas un appel de service Web à un hôte via la FileMaker Data API, et ne dépend pas non plus du fait que l'API soit activée sur un hôte. La similitude entre cette action de script et la FileMaker Data API se trouve uniquement dans le fait que le format JSON des données renvoyées est le même. 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 |
---|---|---|
|
|
|
|
|
Les valeurs |
|
|
Un nom de modèle. |
|
|
Un nom d'occurrence de table. Requis pour les actions |
|
tous les enregistrements |
Un tableau d'objets JSON, chacun spécifiant une rubrique et des critères de recherche. |
|
|
L'ID (numéro d'identification) unique d'un enregistrement. Vous ne pouvez pas spécifier à la fois une clé |
|
|
Un objet JSON qui spécifie l'ordre de tri des enregistrements dans la table du modèle actif. |
|
|
Le numéro d'enregistrement du premier enregistrement dans une plage d'enregistrements de la table du modèle actif. |
|
|
Le nombre maximum d'enregistrements à renvoyer de la table du modèle actif. |
|
valeur de |
Spécifiez un nom de modèle pour récupérer les données dans le cadre d'un autre modèle. |
|
toutes les tables externes |
Un objet JSON qui spécifie une table externe. |
|
|
Le numéro d'enregistrement du premier enregistrement de la table externe dans une plage d'enregistrements liés. Pour |
|
50 |
Le nombre maximum d'enregistrements liés à renvoyer. Pour |
|
|
Un objet JSON qui spécifie les données d'enregistrement à créer ou à mettre à jour. |
|
|
Un objet JSON qui spécifie les données d'enregistrement lié à créer ou à mettre à jour. |
|
|
(Facultatif) Pour une action de mise à jour, l'ID de modification de l'enregistrement à mettre à jour. S'il ne correspond pas au modId actuel de l'enregistrement, ce dernier ne sera pas modifié. |
|
|
(Facultatif) Lors de l'écriture de données, cette action de script ignore si l'option Autoriser les modifications utilisateur d'une rubrique est sélectionnée et utilise la valeur
Consultez la section Définition de la validation des rubriques. |
|
|
(Facultatif) Lors de l'écriture de données, cette action de script ignore si l'option Entrées auto. non modifiables lors de la saisie d'une rubrique est sélectionnée et utilise la valeur
Consultez la section Définition de l'entrée automatique de données. |
Pour plus d'informations sur les clés énumérées ci-dessus, consultez les sections « Utiliser les enregistrements », « Obtenir des métadonnées » et « Effectuer une requête de recherche » dans le 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. -
La clé
script
et toute clé commençant parscript.
sont ignorées. Pour exécuter un autre script, utilisez l'action de script Exécuter script.
Gestion des erreurs
Le résultat JSON dans Cible 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.
Les fonctions Obtenir ( DernièreErreur ) et Obtenir ( DétailDernièreErreur ) renvoient respectivement les mêmes valeurs que dans les clés code
et message
. Obtenir ( EmplacementDernièreErreur ) renvoie l'endroit où l'erreur s'est produite dans le script.
Remarques
-
Cette action de script s'exécute dans sa propre session sans rapport avec le contexte d'une fenêtre ou d'un script qui peut être en cours d'exécution, y compris le script qui exécute cette action de script. Par conséquent, utilisez cette action de script comme si vous effectuiez un appel FileMaker Data API vers un hôte sur le réseau. En tant que tel, les déclencheurs de script et toutes les boîtes de dialogue de rapport d'erreur sont désactivés pendant l'exécution de cette action de script.
-
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
.
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.
{
"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.
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.
{
"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.
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.
{
"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.
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.
{
"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
}
}
}
Exemple 5
Sur la base du modèle Produits, modifie l'enregistrement spécifié par recordId
, en mettant à jour les valeurs des rubriques Stock et Name.
Exécuter FileMaker Data API [ Sélectionner ; Cible: $$résultat ;
JSONSetElement ( "{}" ;
[ "action" ; "update" ; JSONString ] ;
[ "layouts" ; "Products" ; JSONString ] ;
[ "recordId" ; "4" ; JSONString ] ;
[ "fieldData" ; "{ \"Stock\" : 14 ,
\"Name\" : \"Gâteau à la vanille, grand\" }" ; JSONObject ]
) ]
Définir la variable [ $$result ; JSONFormatElements ( $$result ) ]
Les données JSON renvoyées dans la variable globale $$result ont ce format.
{
"messages" :
[
{
"code" : "0",
"message" : "OK"
}
],
"response" :
{
"modId" : "6"
}
}
Si l'enregistrement spécifié par recordId
n'existait pas, Obtenir ( DernièreErreur ) renverrait 101 et Obtenir ( DétailDernièreErreur ) renverrait « Enregistrement manquant », ce qui serait la même chose que code
et message
dans $$result.
Exemple 6
En fonction du modèle Produits, crée un enregistrement et définit les valeurs des rubriques Stock, ID et Name. Comme la rubrique ID est définie pour saisir automatiquement un numéro de série et l'option Entrées auto. non modifiables lors de la saisie est activée, la définition de la clé prohibitmode
sur script
dans l'objet options
remplace cette exigence de saisie automatique et définit la rubrique ID comme spécifié.
Exécuter FileMaker Data API [ Sélectionner ; Cible: $$result ;
JSONSetElement ( "{}" ;
[ "action" ; "create" ; JSONString ] ;
[ "layouts" ; "Produits" ; JSONString ] ;
[ "options" ; "{ \"prohibitmode\" : \"script\" }" ; JSONObject ] ;
[ "fieldData" ; "{ \"Stock\" : 14 ,
\"ID\" : \"FB42\" ,
\"Name\" : \"Croissants\" }" ; JSONObject ]
) ]
Définir variable [ $$result ; JSONFormatElements ( $$result ) ]
Les données JSON renvoyées dans la variable globale $$result ont ce format.
{
"messages" :
[
{
"code" : "0",
"message" : "OK"
}
],
"response" :
{
"modId" : "0",
"recordId" : "7"
}
}
Si la rubrique ID avait également un ensemble de validation pour exiger une valeur unique et qu'un enregistrement avec la valeur d'ID « FB42 » existait déjà, alors Obtenir ( DernièreErreur ) renverrait 504 et Obtenir ( DétailDernièreErreur ) renverrait « La valeur de la rubrique ne correspond pas à la valeur définie dans les options d'entrée », ce qui serait la même chose que code
et message
dans $$result.