Ejecutar FileMaker Data API

Ejecuta una petición de FileMaker Data API.

Temas relacionados 

Opciones 

  • Seleccionar todo el contenido reemplaza todo el contenido de un campo o una variable. Si no selecciona esta opción:

    • En un campo, solo sustituye la parte seleccionada del campo activo e inserta datos en el punto de inserción. El punto de inserción predeterminado se encuentra al final de los datos del campo.

    • En una variable que no tenga datos del contenedor, inserta datos al final del valor actual de la variable. En una variable que tenga datos del contenedor, sustituye el contenido de la variable.

  • Destino especifica el campo en el que se insertará el resultado o la variable que se definirá. Si no existe la variable, este paso de guión creará una (consulte Usar variables).

  • Petición es un cálculo que especifica la petición como texto. El texto es un objeto JSON con el formato descrito a continuación.

Compatibilidad 

Producto Format

FileMaker Pro

FileMaker Go

FileMaker WebDirect

FileMaker Server

FileMaker Cloud

FileMaker Data API

Publicación en la Web personalizada

Se origina en 

19.0

Descripción 

FileMaker Data API es una API REST disponible como servicio Web para FileMaker Server y FileMaker Cloud. Las aplicaciones Web pueden utilizar esta API para enviar peticiones y recibir datos en formato JSON desde archivos de FileMaker Pro alojados.

Con la misma funcionalidad subyacente que FileMaker Data API en los anfitriones de FileMaker, este paso de guión permite que un guión ejecutado por cualquier producto de FileMaker solicite datos en el archivo actual, tanto si están alojados como si no, y reciba los datos en formato JSON. Este paso de guión no realiza una llamada de servicio web a un anfitrión mediante FileMaker Data API ni depende de si la API está activada en un anfitrión. La similitud entre este paso de guión y FileMaker Data API es principalmente que el formato JSON de los datos devueltos es el mismo. La petición es un objeto JSON sencillo en lugar de la combinación de URL, encabezado y cuerpo de la petición que requiere FileMaker Data API para utilizar el servicio Web de un anfitrión de FileMaker. El resultado devuelto en Destino tiene el mismo formato JSON que cuando se solicita a un anfitrión a través de FileMaker Data API.

Formato de la petición

Este paso de guión admite los siguientes pares de clave-valor en el objeto JSON especificado por la opción Petición. Si no se especifica una de estas claves en la solicitud, se utilizará el valor predeterminado.

Clave Valor predeterminado Descripción

action

"read"

read, metaData, create, update, delete y duplicate son los valores admitidos. Utilice metaData para recuperar información sobre las tablas y las presentaciones. Utilice los demás valores para actuar sobre los datos de registro.

version

"v1"

v1, v2 y vLatest son los valores admitidos. Los resultados generados y el comportamiento varían en función de la versión de la API.

layouts

 

Un nombre de presentación.

tables

 

Un nombre de ocurrencia de la tabla Necesario para las acciones metaData de las ocurrencias de la tabla. Funciona como la clave layouts. Si se especifica la ocurrencia de la tabla, se devuelven los metadatos de esa tabla. Si no se especifica ningún nombre, se devuelve la lista de ocurrencias de la tabla.

query

Todos los registros

Una matriz de objetos JSON; cada uno de ellos especifica un campo y criterios de búsqueda.

recordId

 

El número de ID exclusivo de un registro. No se puede especificar una clave de query y recordId.

sort

 

Un objeto JSON que especifica el orden de los registros en la tabla de la presentación actual.

offset

1

El número de registro del primer registro en un rango de registros de la tabla de la presentación actual.

limit

100

El número máximo de registros que debe devolverse desde la tabla de la presentación actual.

layout.response

Valor de layouts

Para especificar los datos en el contexto de una presentación diferente, especifique un nombre de presentación.

portal

Todos los portales

Un objeto JSON que especifica un portal.

offset.nombre-portal

1

El número de registro del primer registro del portal en un rango de registros relacionados. Para nombre-portal, debe especificar el nombre de objeto del portal, si existe; de lo contrario, el nombre de la tabla relacionada.

limit.nombre-portal

50

El número máximo de registros relacionados que debe devolverse. Para nombre-portal, debe especificar el nombre de objeto del portal, si existe; de lo contrario, el nombre de la tabla relacionada.

fieldData

 

Un objeto JSON que especifica los datos de registro para crear o actualizar.

portalData

 

Un objeto JSON que especifica los datos de registro relacionados para crear o actualizar.

modId

 

(Opcional) Para una acción de actualización, el ID de modificación del registro a actualizar. Si no coincide con el modId actual del registro, el registro no se modificará.

"opciones":
{"entrymode":"valor"}

"user"

(Opcional) Al escribir datos, este paso de guion ignora si la opción Permitir al usuario anular durante la introducción de datos de un campo está seleccionada y, en su lugar, utiliza entrymode. Para valor, use:

  • guión: ignore los requisitos de validación de datos de un campo.

  • usuario: siga los requisitos de validación de datos de un campo.

Consulte Definir validaciones de campo.

"opciones":
{"prohibitmode":"valor"}

"user"

(Opcional) Al escribir datos, este paso de guión ignora si está seleccionada la opción Prohibir la modificación del valor durante la introducción de datos de un campo y utiliza en su lugar el valor de prohibitmode. Para valor, use:

  • guión: ignore los requisitos de introducción automática de datos de un campo.

  • usuario: siga los requisitos de introducción automática de datos de un campo.

Consulte Definir la entrada de datos automática.

Para obtener más información sobre las claves enumeradas anteriormente, consulte los temas en "Trabajar con registros", así como "Obtener metadatos" y "Realizar una petición de búsqueda" en la Guía de FileMaker Data API.

Se omiten las siguientes claves:

  • databases se omite porque la base de datos es siempre la que pertenece a la ventana en la que se ejecuta el guión.

  • Authorization se omite porque los privilegios del guión son los del usuario actual o de acceso total, si el guión actual dispone de privilegios de acceso total.

  • Content-Type se omite porque la solicitud debe estar en formato JSON.

  • Se omiten script y las claves que empiecen por script.. Para ejecutar otro guión, utilice el paso de guión Ejecutar guión en su lugar.

Gestión de errores

El resultado JSON en Target contiene al menos una clave de messages con un objeto que incluye claves de message y code. Los valores de code son los que se definen en Códigos de error de FileMaker. La mayoría de los valores de message y code son iguales a los que ha devuelto FileMaker Data API, disponible como servicio Web en los anfitriones de FileMaker. Algunos errores adicionales son exclusivos de este paso de guión y ayudan a identificar problemas cuando se analiza la opción Request. Estos errores adicionales utilizan los valores de code 3, 1708 y 1710, pero utilizan muchos valores de message diferentes para proporcionar más información sobre el error.

Las funciones Get ( LastError ) y Get ( LastErrorDetail ) devuelven los mismos valores que en las claves code y message, respectivamente. Get ( LastErrorLocation ) devuelve dónde se produjo el error en el guión.

Notas 

  • Este paso de guión se ejecuta en su propia sesión sin relación con el contexto de ninguna ventana o de un guión que pueda estar ejecutándose, incluido el guión que realiza este paso de guión. Por lo tanto, utilice este paso de guión como si estuviera realizando una llamada de FileMaker Data API a un anfitrión a través de la red. De este modo, los activadores de guiones y los cuadros de diálogo de informe de errores se desactivan mientras se ejecuta este paso de guión.

  • Si el archivo está alojado en FileMaker Server o FileMaker Cloud, los valores devueltos de los campos contenedor son las direcciones URL que se pueden utilizar para recuperar el contenido del campo. Si el archivo se abre localmente, solo se devuelve el nombre del archivo en el campo contenedor.

Ejemplo 1 

Devuelve metadatos para todas las ocurrencias de la tabla al no especificar ningún valor para la clave de tables. En este caso, hay una tabla de origen (o base) (Productos) y dos ocurrencias de la tabla (Productos y Productos_EnExistencias). En este ejemplo, se utiliza la función JSONSetElement para crear el objeto JSON de la opción Request.

Copiar
Ejecutar FileMaker Data API [ Select ; Target: $$result ; 
JSONSetElement ( "{}" ; 
    [ "action" ; "metaData" ; JSONString ] ;
    [ "tables" ; "" ; JSONString ] 
) ]
Establecer variable [ $$result ; JSONFormatElements ( $$result ) ]

Los datos de JSON devueltos en la variable global $$result presentan este formato.

Copiar
{
    "messages"
    [
        {
            "code" : "0",
            "message" : "Correcto"
        }
    ],
    "response"
    {
        "tables"
        [
            {
                "baseTable" : "Productos",
                "nombre" : "Productos"
            },
            {
                "baseTable" : "Productos",
                "nombre" : "Productos_EnExistencias"
            }
        ]
    }
}

Ejemplo 2 

En función de la presentación Productos, devuelve el primer registro en la tabla asociada a la presentación Productos.

Copiar
Ejecutar FileMaker Data API [ Select ; Target: $$result ; JSONSetElement ( "{}" ; [ "layouts" ; "Productos" ; JSONString ] ; [ "limit" ; 1 ; JSONNumber ] ) ] Set Variable [ $$result ; JSONFormatElements ( $$result ) ]

Los datos de JSON devueltos en la variable global $$result presentan este formato.

Copiar
{
    "messages"
    [
        {
            "code" : "0",
            "message" : "Correcto"
        }
    ],
    "response"
    {
        "data"
        [
            {
                "fieldData"
                {
                    "ID" : "FB1",
                    "Nombre" : "Rosquillas",
                    "Existencias" : 43
                },
                "modId" : "6",
                "portalData" : {},
                "recordId" : "1"
            }
        ],
        "dataInfo"
        {
            "database" : "Favorite Bakery",
            "foundCount" : 3,
            "layout" : "Productos",
            "returnedCount" : 1,
            "table" : "Productos",
            "totalRecordCount" : 3
        }
    }
}

Ejemplo 3 

En función de la presentación Productos, ejecuta una búsqueda de registros en la que el campo Existencias es inferior a 40 y devuelve el conjunto encontrado ordenado por el campo Existencias de forma descendente.

Copiar
Ejecutar FileMaker Data API [ Select ; Target: $$result ; 
JSONSetElement ( "{}" ; 
    [ "layouts" ; "Productos" ; JSONString ] ;
    [ "query" ; "[ { \"Existencias\":\"<40\" } ]" ; JSONArray ] ;
    [ "sort" ; "[ { \"fieldName\":\"Existencias\" , 
                    \"sortOrder\":\"descend\" } ]" ; JSONArray ]
) ]
Establecer variable [ $$result ; JSONFormatElements ( $$result ) ]

Los datos de JSON devueltos en la variable global $$result presentan este formato.

Copiar
{
    "messages"
    [
        {
            "code" : "0",
            "message" : "Correcto"
        }
    ],
    "response"
    {
        "data"
        [
            {
                "fieldData"
                {
                    "ID" : "FB3",
                    "Nombre" : "Baguette",
                    "Existencias" : 34
                },
                "modId" : "1",
                "portalData" : {},
                "recordId" : "7"
            },
            {
                "fieldData"
                {
                    "ID" : "FB2",
                    "Nombre" : "Tarta de chocolate",
                    "Existencias" : 23
                },
                "modId" : "1",
                "portalData" : {},
                "recordId" : "6"
            }
        ],
        "dataInfo"
        {
            "database" : "Favorite Bakery",
            "foundCount" : 2,
            "layout" : "Products",
            "returnedCount" : 2,
            "table" : "Products",
            "totalRecordCount" : 3
        }
    }
}

Ejemplo 4 

En función de la presentación Productos, devuelve el primer registro de la tabla asociada a la presentación Productos y, si hay filas de portal, devuelve los dos primeros registros después de omitir los dos primeros.

Copiar
Ejecutar FileMaker Data API [ Select ; Target: $$result ; 
JSONSetElement ( "{}" ; 
    [ "layouts" ; "Productos" ; JSONString ] ;
    [ "limit" ; 1 ; JSONNumber ] ;
    [ "limit.RelatedProducts" ; 2; JSONNumber ] ; 
    [ "offset.RelatedProducts" ; 2 ; JSONNumber ]
) ]
Establecer variable [ $$result ; JSONFormatElements ( $$result ) ]

Los datos de JSON devueltos en la variable global $$result presentan este formato.

Copiar
{
    "messages"
    [
        {
            "code" : "0",
            "message" : "Correcto"
        }
    ],
    "response"
    {
        "data"
        [
            {
                "fieldData"
                {
                    "ID" : "FB1",
                    "Nombre" : "Rosquillas",
                    "Existencias" : 43
                },
                "modId" : "6",
                "portalData" : {
                    "RelatedProducts" :
                    [
                        {
                            "ID" : "FB4",
                            "Nombre" : "Buñuelos",
                            "Existencias" : 53
                        },
                        {
                            "ID" : "FB5",
                            "Nombre" : "Shortcake",
                            "Existencias" : 15
                        }
                    ]
                },
                "recordId" : "1"
            }
        ],
        "dataInfo"
        {
            "database" : "Favorite Bakery",
            "foundCount" : 3,
            "layout" : "Productos",
            "returnedCount" : 1,
            "table" : "Productos",
            "totalRecordCount" : 6
        }
    }
}

Ejemplo 5 

Basándose en la presentación Productos, modifica el registro especificado por recordId, actualizando los valores de los campos Existencias y Nombre.

Copiar
Ejecutar FileMaker Data API [ Select ; Target: $$result ; 
JSONSetElement ( "{}" ; 
    [ "action" ; "update" ; JSONString ] ;
    [ "layouts" ; "Products" ; JSONString ] ;
    [ "recordId" ; "4" ; JSONString ] ;
    [ "fieldData" ; "{ \"Stock\" : 14 , 
       \"Name\" : \"Vanilla Cake, Large\" }" ; JSONObject ] 
) ]
Establecer variable [ $$result ; JSONFormatElements ( $$result ) ]

Los datos de JSON devueltos en la variable global $$result presentan este formato.

Copiar
{
    "messages"
    [
        {
            "code" : "0",
            "message" : "OK"
        }
    ],
    "response"
    {
        "modId" : "6"
    }
}

Si el registro especificado por recordId no existiera, Get(LastError) devolvería 101, y Get(LastErrorDetail) devolvería "Falta un registro", que sería lo mismo que code y message en $$result.

Ejemplo 6 

En función de la presentación Productos, crea un registro y establece los valores de los campos Existencias, ID y Nombre. Como el campo ID se ha configurado para introducir automáticamente un número de serie y la opción Prohibir la modificación del valor durante la introducción de datos está activada, al establecer la clave prohibitmode en guión en el objeto options, se anula ese requisito de introducción automática y se establece el campo ID, tal y como se ha especificado.

Copiar
Ejecutar FileMaker Data API [ Select ; Target: $$result ; 
        JSONSetElement ( "{}" ; 
        [ "action" ; "crear" ; JSONString ] ;
        [ "layouts" ; "Productos" ; JSONString ] ;
        [ "options" ; "{ \"prohibitmode\" : \"guión\" }" ; JSONObject ] ;
        [ "fieldData" ; "{ \"Existencias\" : 14 , 
           \"ID\" : \"FB42\" ,
           \"Name\" : \"Croissants\" }" ; JSONObject ] 
        ) ]
        Establecer variable [ $$result ; JSONFormatElements ( $$result ) ]

Los datos de JSON devueltos en la variable global $$result presentan este formato.

Copiar
{
        "messages"
        [
           {
               "code" : "0",
               "message" : "Correcto"
           }
        ],
        "response"
        {
           "modId" : "0",
           "recordId" : "7"
        }
        }

Si el campo ID también tuviera la validación configurada para solicitar un valor único y ya existiera un registro con el valor ID de "FB42", Get ( LastError ) devolvería 504 y Get ( LastErrorDetail ) devolvería "El valor del campo no es único, como requieren las opciones de validación de entrada", que sería igual a code y message en $$result.