Esegui FileMaker Data API

Esegue una richiesta FileMaker Data API.

Opzioni 

  • Seleziona interi contenuti sostituisce i contenuti di un campo o di una variabile. Se non si seleziona questa opzione:

    • Per un campo, sostituisce solo la parte selezionata del campo attivo oppure inserisce dati nel punto di inserimento. La posizione predefinita del cursore è alla fine dei dati nel campo.

    • Per una variabile che non ha dati Contenitore, inserisce i dati alla fine del valore corrente della variabile. Per una variabile che ha dati Contenitore, sostituisce i contenuti della variabile.

  • Destinazione specifica il campo in cui inserire il risultato o la variabile da impostare. Se la variabile non esiste, questa istruzione di script ne crea una (vedere Utilizzo di variabili).

  • Richiesta è un calcolo che specifica la richiesta come testo. Il testo è un oggetto JSON nel formato descritto di seguito.

Compatibilità 

Prodotto Supportata

FileMaker Pro

FileMaker Go

FileMaker WebDirect

FileMaker Server

FileMaker Cloud

FileMaker Data API

Pubblicazione Web personalizzata

Creata nella versione 

19.0

Descrizione 

FileMaker Data API è un'API REST disponibile come un servizio Web per FileMaker Server e FileMaker Cloud. Le applicazioni Web possono utilizzare questa API per inviare richieste e ricevere dati in formato JSON dai file FileMaker Pro ospitati.

Utilizzando la stessa funzionalità che usa FileMaker Data API per gli host FileMaker, questa istruzione di script consente che uno script eseguito da qualsiasi prodotto FileMaker possa richiedere i dati nel file corrente, ospitato o no, e ricevere i dati in formato JSON. Questa istruzione di script non esegue una chiamata servizio Web a un host utilizzando FileMaker Data API, né dipende dal fatto che l'API sia abilitata su un host. La somiglianza tra questa istruzione di script e FileMaker Data API è solamente che il formato JSON dei dati restituiti è lo stesso. La richiesta è un semplice oggetto JSON, anziché la combinazione di URL, intestazione e il corpo della richiesta, che vengono richiesti da FileMaker Data API per utilizzare un servizio Web di un host FileMaker. Il risultato restituito in Destinazione è nello stesso formato JSON che si avrebbe con la richiesta da un host attraverso FileMaker Data API.

Formato richiesta

Questa istruzione di script supporta le seguenti coppie chiave-valore nell'oggetto JSON specificato dall'opzione Richiesta. Se nella richiesta non è specificata una di queste chiavi, viene utilizzato il valore predefinito.

Chiave Valore predefinito Descrizione

azione

"read"

read, metaData, create, update, delete e duplicate sono i valori supportati. Utilizzare metaData per recuperare informazioni su tabelle e formati. Utilizzare gli altri valori per agire sui dati del record.

version

"v1"

v1, v2 e vLatest sono i valori supportati. Il comportamento e i risultati generati variano in base alla versione API.

formati

 

Un nome del formato.

tabelle

 

Un nome di ricorrenza di tabella. Necessario per azioni su metaData della ricorrenza di tabella. Funziona come la chiave formati. Se viene specificata la ricorrenza di tabella, vengono restituiti i metadati per tale tabella. Se non viene specificato alcun nome, viene restituito l'elenco delle ricorrenze di tabella.

query

tutti i record

Una matrice di oggetti JSON, ognuno dei quali specifica un campo e i criteri di ricerca.

recordId

 

L'ID univoco di un record. Non è possibile specificare una query e la chiave recordId contemporaneamente.

ordina

 

Un oggetto JSON che specifica il criterio di ordinamento dei record nella tabella del formato corrente.

offset

1

Il numero del primo record in una serie di record nella tabella del formato corrente.

limit

100

Il numero massimo di record da restituire dalla tabella del formato corrente.

formato.risposta

valore da formati

Per recuperare i dati nel contesto di un formato diverso, specificare un nome del formato.

portale

tutti i portali

Un oggetto JSON che specifica un portale.

offset.nome-portale

1

Il numero del primo record del portale in una serie di record correlati. Per nome-portale, è necessario specificare il nome dell'oggetto del portale, se esiste, altrimenti si deve specificare il nome della tabella correlata.

limit.nome-portale

50

Il numero massimo di record correlati da restituire. Per nome-portale, è necessario specificare il nome dell'oggetto del portale, se esiste, altrimenti si deve specificare il nome della tabella correlata.

fieldData

 

Un oggetto JSON che specifica i dati del record da creare o aggiornare.

portalData

 

Un oggetto JSON che specifica i dati dei record correlati da creare o aggiornare.

modId

 

(Facoltativo) Per un'azione di aggiornamento, l'ID di modifica del record da aggiornare. Se non corrisponde al modId corrente del record, il record non verrà modificato.

"options":
{"entrymode":"value"}

"user"

(Facoltativo) Quando si scrivono i dati, questa istruzione di script ignora se l'opzione Consenti all'utente di ignorare durante l'immissione dei dati di un campo è selezionata e utilizza invece il valore entrymode. Per value, utilizzare:

  • script: ignorare i requisiti di convalida dei dati di un campo

  • user: rispettare i requisiti di convalida dei dati di un campo

Vedere Definizione della verifica dei campi.

"options":
{"prohibitmode":"value"}

"user"

(Facoltativo) Quando si scrivono i dati, questa istruzione di script ignora se l'opzione Impedisci modifica valore durante immissione dati di un campo è selezionata e utilizza invece il valore prohibitmode. Per value, utilizzare:

  • script: ignorare i requisiti di inserimento automatico dei dati di un campo

  • user: rispettare i requisiti di inserimento automatico dei dati di un campo

Vedere Definizione dell'immissione automatica dei dati.

Per ulteriori informazioni sulle chiavi sopra elencate, vedere gli argomenti sotto "Lavorare con i record", "Ricavare i metadati" e "Eseguire una richiesta di ricerca" nella Guida di FileMaker Data API.

Le seguenti chiavi vengono ignorate:

  • database viene ignorato perché il database è sempre quello nella finestra in cui viene eseguito lo script.

  • Authorization viene ignorato perché i privilegi dello script sono quelli dell'utente attuale o di accesso completo, se allo script corrente sono stati dati privilegi di accesso completo.

  • Content-Type viene ignorato perché la richiesta deve essere in formato JSON.

  • script e qualsiasi chiave che inizia con script. vengono ignorati. Per eseguire un altro script, usare invece l’istruzione di script Esegui script.

Gestione degli errori

Il risultato JSON in Destinazione contiene almeno una chiave messages con un oggetto contenente le chiavi message e code. I valori per codice sono quelli definiti nei Codici di errore di FileMaker. La maggior parte dei valori per messaggio e codice sono identici a quelli restituiti da FileMaker Data API disponibile come servizio Web sugli host FileMaker. Alcuni errori aggiuntivi sono unici per questa istruzione di script e aiutano a identificare i problemi nell'analisi dell'opzione Richiesta. Questi errori aggiuntivi utilizzano valori di 3, 1708 e 1710 per codice ma utilizzano molti valori diversi per messaggio per fornire maggiori informazioni sull'errore.

Le funzioni Get ( UltimoErrore ) e Get ( DettagliUltimoErrore ) restituiscono rispettivamente gli stessi valori delle chiavi codice e messaggio. Get ( PosizioneUltimoErrore ) restituisce il punto in cui si è verificato l'errore nello script.

Note 

  • Questa istruzione di script viene eseguita in una propria sessione scollegata dal contesto di qualsiasi finestra o script in esecuzione, incluso lo script che esegue l'istruzione. Pertanto, utilizzare questa istruzione di script come se si stesse effettuando una chiamata FileMaker Data API a un host attraverso la rete. Per questo i trigger di script e tutte le finestre di dialogo per la segnalazione di errori sono disabilitati durante l'esecuzione di questa istruzione di script.

  • Se il file è ospitato da FileMaker Server o FileMaker Cloud, i valori restituiti dei campi Contenitore sono URL che possono essere utilizzati per ricavare i contenuti dei campi. Se il file viene aperto localmente, viene restituito solo il nome del file nel campo Contenitore.

Esempio 1 

Restituisce i metadati per tutte le ricorrenze di tabella se non viene specificato alcun valore per la chiave tabelle. In questo caso, vi sono una tabella origine (o base) (Prodotti) e due ricorrenze di tabella (Prodotti e Prodotti_InMagazzino). Questo esempio utilizza la funzione JSONSetElement per creare un oggetto JSON nell’opzione Richiesta.

Copia
Esegui FileMaker Data API [ Seleziona ; Destinazione: $$risultato ; 
JSONSetElement ( "{}" ; 
    [ "azione" ; "metaData" ; JSONString ] ;
    [ "tabelle" ; "" ; JSONString ] 
) ]
Imposta variabile [ $$risultato ; JSONFormatElements ( $$risultato ) ]

I dati JSON restituiti nella variabile globale $$risultato hanno questo formato.

Copia
{
    "messaggi"
    [
        {
            "codice" : "0",
            "messaggio" : "OK"
        }
    ],
    "risposta"
    {
        "tabelle"
        [
            {
                "tabellaBase" : "Prodotti",
                "nome" : "Prodotti"
            },
            {
                "tabellaBase" : "Prodotti",
                "nome" : "Prodotti_InMagazzino"
            }
        ]
    }
}

Esempio 2 

In base al formato Prodotti, restituisce il primo record nella tabella associato al formato Prodotti.

Copia
Esegui FileMaker Data API [ Seleziona ; Destinazione: $$risultato ; 
JSONSetElement ( "{}" ; 
    [ "formati" ; "Prodotti" ; JSONString ] ;
    [ "limite" ; 1 ; JSONNumber ]
) ]
Imposta variabile [ $$risultato ; JSONFormatElements ( $$risultato ) ]

I dati JSON restituiti nella variabile globale $$risultato hanno questo formato.

Copia
{
    "messaggi"
    [
        {
            "codice" : "0",
            "messaggio" : "OK"
        }
    ],
    "risposta"
    {
        "dati"
        [
            {
                "datiCampo"
                {
                    "ID" : "FB1",
                    "Nome" : "Donuts",
                    "Magazzino" : 43
                },
                "modId" : "6",
                "datiPortale" : {},
                "recordId" : "1"
            }
        ],
        "infoDati"
        {
            "database" : "Panificio preferito",
            "contoTrovati" : 3,
            "formato" : "Prodotti",
            "contoRestituiti" : 1,
            "tabella" : "Prodotti",
            "contoRecordTotale" : 3
        }
    }
}

Esempio 3 

In base al formato Prodotti, esegue una ricerca per trovare record in cui il campo Magazzino è inferiore a 40 e restituisce il gruppo trovato ordinato in base al campo Magazzino in ordine decrescente.

Copia
Esegui FileMaker Data API [ Seleziona ; Destinazione: $$risultato ; 
JSONSetElement ( "{}" ; 
    [ "formati" ; "Prodotti" ; JSONString ] ;
    [ "query" ; "[ { \"Magazzino\":\"<40\" } ]" ; JSONArray ] ;
    [ "ordina" ; "[ { \"nomeCampo\":\"Magazzino\" , 
                    \"sortOrder\":\"descendente\" } ]" ; JSONArray ]
) ]
Imposta variabile [ $$risultato ; JSONFormatElements ( $$risultato ) ]

I dati JSON restituiti nella variabile globale $$risultato hanno questo formato.

Copia
{
    "messaggi"
    [
        {
            "codice" : "0",
            "messaggio" : "OK"
        }
    ],
    "risposta"
    {
        "dati"
        [
            {
                "datiCampo"
                {
                    "ID" : "FB3",
                    "Nome" : "Baguette",
                    "Magazzino" : 34
                },
                "modId" : "1",
                "datiPortale" : {},
                "recordId" : "7"
            },
            {
                "datiCampo"
                {
                    "ID" : "FB2",
                    "Nome" : "Torta al cioccolato",
                    "Magazzino" : 23
                },
                "modId" : "1",
                "datiPortale" : {},
                "recordId" : "6"
            }
        ],
        "infoDati"
        {
            "database" : "Panificio preferito",
            "contoTrovati" : 2,
            "formato" : "Prodotti",
            "contoRestituiti" : 2,
            "tabella" : "Prodotti",
            "contoRecordTotale" : 3
        }
    }
}

Esempio 4 

In base al formato Prodotti, restituisce il primo record nella tabella associato al formato Prodotti e, se vi sono righe nel portale, restituisce i primi 2 record dopo aver saltato i primi 2.

Copia
Esegui FileMaker Data API [Seleziona; Destinazione: $$risultato; 
JSONSetElement ( "{}" ; 
    [ "formati" ; "Prodotti" ; JSONString ] ; 
    [ "limite" ; 1 ; JSONNumber ] ; 
    [ "limite.ProdottiCorrelati" ; 2; JSONNumber ] ; 
    [ "offset.ProdottiCorrelati" ; 2 ; JSONNumber ]
) ]
Imposta variabile [$$risultato; JSONFormatElements ($$risultato)]

I dati JSON restituiti nella variabile globale $$risultato hanno questo formato.

Copia
{
    "messaggi"
    [
        {
            "codice" : "0",
            "messaggio" : "OK"
        }
    ],
    "risposta"
    {
        "dati"
        [
            {
                "datiCampo"
                {
                    "ID" : "FB1",
                    "Nome" : "Donuts",
                    "Magazzino" : 43
                },
                "modId" : "6",
                "datiPortale" : {
                    "ProdottiCorrelati" :
                    [
                        {
                            "ID" : "FB4",
                            "Nome" : "Palline fritte",
                            "Magazzino" : 53
                        },
                        {
                            "ID" : "FB5",
                            "Nome" : "Short Cake",
                            "Magazzino" : 15
                        }
                    ]
                },
                "recordId" : "1"
            }
        ],
        "infoDati"
        {
            "database" : "Panificio preferito",
            "contoTrovati" : 3,
            "formato" : "Prodotti",
            "contoRestituiti" : 1,
            "tabella" : "Prodotti",
            "contoRecordTotale" : 6
        }
    }
}

Esempio 5 

In base al formato Prodotti, modifica il record specificato da recordId, aggiornando i valori dei campi Magazzino e Nome.

Copia
Esegui FileMaker Data API [ Seleziona ; Destinazione: $$risultato ; 
JSONSetElement ( "{}" ; 
    [ "azione" ; "update" ; JSONString ] ;
    [ "formati" ; "Prodotti" ; JSONString ] ;
    [ "recordId" ; "4" ; JSONString ] ;
    [ "datiCampo" ; "{ \"Magazzino\" : 14 , 
       \"Nome\" : \"Torta alla vaniglia, Grande\" }" ; JSONObject ] 
) ]
Imposta variabile [ $$risultato ; JSONFormatElements ( $$risultato ) ]

I dati JSON restituiti nella variabile globale $$risultato hanno questo formato.

Copia
{
    "messaggi"
    [
        {
            "codice" : "0",
            "messaggi" : "OK"
        }
    ],
    "risposta"
    {
        "modId" : "6"
    }
}

Se il record specificato da recordId non esistesse, Get ( UltimoErrore ) restituirebbe 101 e Get ( DettagliUltimoErrore ) restituirebbe "Manca un record", che sarebbe lo stesso di code e message in $$risultato.

Esempio 6 

In base al formato Prodotti, crea un record e imposta i valori dei campi Magazzino, ID e Nome. Poiché il campo ID è impostato per inserire automaticamente un numero di serie e l'opzione Impedisci modifica valore durante immissione dati è abilitata, l'impostazione della chiave prohibitmode su script nell'oggetto options sovrascrive il requisito di immissione automatica e imposta il campo ID come specificato.

Copia
Esegui FileMaker Data API [ Seleziona ; Destinazione: $$risultato ; 
        JSONSetElement ( "{}" ; 
        [ "azione" ; "crea" ; JSONString ] ;
        [ "formati" ; "Prodotti" ; JSONString ] ;
        [ "opzioni" ; "{ \"prohibitmode\" : \"script\" }" ; JSONObject ] ;
        [ "datiCampo" ; "{ \"Magazzino\" : 14 , 
           \"ID\" : \"FB42\" ,
           \"Nome\" : \"Croissant\" }" ; JSONObject ] 
        ) ]
        Imposta variabile [ $$risultato ; JSONFormatElements ( $$risultato ) ]

I dati JSON restituiti nella variabile globale $$risultato hanno questo formato.

Copia
{
        "messaggi"
        [
           {
               "codice" : "0",
               "messaggio" : "OK"
           }
        ],
        "risposta"
        {
           "modId" : "0",
           "recordId" : "7"
        }
        }

Se il campo ID avesse anche la verifica impostata per richiedere un valore univoco ed esistesse già un record con il valore ID "FB42", allora Get ( UltimoErrore ) restituirebbe 504 e Get ( DettagliUltimoErrore ) restituirebbe "Il valore del campo non è univoco come richiesto dalle opzioni di verifica", che sarebbe lo stesso di codice e messaggio in $$risultato.