Executar FileMaker Data API
Executa uma solicitação do FileMaker Data API.
Consulte também
Opções
-
Selecionar todo o conteúdo substitui o conteúdo de um campo ou uma variável. Se você não selecionar essa opção:
-
Para um campo, substitui somente a parte selecionada do campo ativo ou insere os dados no ponto de inserção. O ponto de inserção padrão está após os dados do campo.
-
Para uma variável que não tem dados de container, insere os dados no fim do valor atual da variável. Para uma variável que tem dados de container, substitui o conteúdo da variável.
-
-
Target especifica o campo no qual inserir o resultado ou a variável que será definida. Se não existir uma variável, essa etapa de script criará uma (consulte Utilização de variáveis).
-
Request é um cálculo que especifica a solicitação como texto. O texto é um objeto JSON no formato descrito abaixo.
Compatibilidade
Produto | Compatível |
---|---|
FileMaker Pro |
Sim |
FileMaker Go |
Sim |
FileMaker WebDirect |
Sim |
FileMaker Server |
Sim |
FileMaker Cloud |
Sim |
FileMaker Data API |
Sim |
Publicação na Web personalizada |
Sim |
Originada na versão
19.0
Descrição
O FileMaker Data API é uma API REST disponível como um serviço da Web para o FileMaker Server e o FileMaker Cloud. Os aplicativos da Web podem usar essa API para enviar solicitações e receber dados no formato JSON dos arquivos hospedados do FileMaker Pro.
Ao usar a mesma funcionalidade subjacente que o FileMaker Data API nos hosts do FileMaker, essa etapa de script permite que um script executado por qualquer produto FileMaker solicite dados no arquivo atual, esteja hospedado ou não, e receba dados no formato JSON. Esta etapa de script não faz uma chamada de serviço Web para um host usando a FileMaker Data API, nem depende de a API estar habilitada em um host. A única semelhança entre esta etapa de script e a FileMaker Data API é que o formato JSON dos dados retornados é o mesmo. A solicitação é um simples objeto JSON, e não a combinação de URL, cabeçalho e corpo de solicitação, exigida pelo FileMaker Data API para usar um serviço da Web do host do FileMaker. O resultado retornado em Target fica no mesmo formato JSON de quando a solicitação é feita, a partir de um host, por meio do FileMaker Data API.
Formato de solicitação
Esta etapa de script é compatível com os seguintes pares chave-valor no objeto JSON especificado pela opção Request . Se uma destas chaves não for especificada na solicitação, o valor padrão será usado.
Chave | Valor padrão | Descrição |
---|---|---|
|
|
|
|
|
|
|
|
Escolha o nome do layout. |
|
|
Nome da ocorrência de tabela. Obrigatório para as ações |
|
todos os registros |
Uma matriz de objetos JSON, cada um especificando um campo e os critérios de busca. |
|
|
O número de ID exclusivo de um registro. Você não pode especificar uma chave |
|
|
Um objeto JSON que especifica a ordem de classificação dos registros na tabela do layout atual. |
|
|
O número do primeiro registro em um intervalo de registros na tabela do layout atual. |
|
|
O número máximo de registros que deve ser retornado da tabela do layout atual. |
|
valor de |
Para recuperar os dados no contexto de um layout diferente, especifique um nome de layout. |
|
todos os portais |
Um objeto JSON que especifica um portal. |
|
|
O número do primeiro registro em um intervalo de registros em uma gama de registros relacionados. Para |
|
50 |
O número máximo de registros relacionados que deve ser retornado. Para |
|
|
Um objeto JSON que especifica dados de registro para criar ou atualizar. |
|
|
Um objeto JSON que especifica dados de registro relacionados para criar ou atualizar. |
|
|
(Opcional) Para uma ação de atualização, o ID de modificação do registro a ser atualizado. Se não corresponder ao modId atual do registro, o registro não será modificado. |
|
|
(Opcional) Ao gravar dados, esta etapa de script ignora se a opção Permitir que o usuário ignore durante entrada de dados de um campo está selecionada e usa o valor
Consulte Definição de validação do campo. |
|
|
(Opcional) Ao gravar dados, esta etapa de script ignora se a opção Proibir modificação do valor durante a entrada de dados de um campo é selecionada e usa o valor
Consulte Definição da entrada de dados automática. |
Para obter mais informações sobre as chaves listadas acima, consulte os tópicos em "Trabalhar com registros", "Obter metadados" e "Efetuar uma solicitação de pesquisa" no Guia da API do FileMaker Data.
As seguintes chaves são ignoradas:
-
A chave
databases
é ignorada porque o banco de dados é sempre o que pertence à janela na qual o script está sendo executado. -
A chave
Authorization
é ignorada porque os privilégios do script são os do usuário ou de acesso total, caso o script tenha concedido privilégios de acesso total. -
A chave
Content-Type
é ignorada porque a solicitação precisa estar no formato JSON. -
A chave
script
e qualquer outra chave que comece comscript.
são ignoradas. Para executar outro script, use a Etapa de script Realizar script.
Como lidar com erros
O resultado JSON em Destino contém pelo menos uma chave de mensagens
com um objeto que contém chaves de message
e code
. Os valores de code
são aqueles definidos em Códigos de erro do FileMaker. A maioria dos valores de message
e code
são os mesmos que os retornados pelo FileMaker Data API disponível como um serviço da web nos hosts do FileMaker. Alguns erros adicionais são exclusivos para essa etapa de script e ajudam a identificar os problemas ao analisar a opção Request. Esses erros adicionais usam os valores 3, 1708 e 1710 de código
, mas usam diversos valores de message
diferentes para fornecer mais detalhes sobre o erro.
As funções Get(LastError) e Get(LastErrorDetail) retornam os mesmos valores que nas chaves de código
e mensagem
, respectivamente. Get(LastErrorLocation) retorna onde o erro ocorreu no script.
Notas
-
Essa etapa de script é executada em sua própria sessão não relacionada ao contexto de qualquer janela ou de um script que possa estar em execução, incluindo o script que executa esta etapa de script. Portanto, use esta etapa de script como se estivesse fazendo uma chamada da API do FileMaker Data para um host pela rede. Como tal, os gatilhos de script e as caixas de diálogo de relatório de erro são desativados enquanto essa etapa de script é executada.
-
Se o arquivo for hospedado pelo FileMaker Server ou pelo FileMaker Cloud, os valores retornados dos campos de container serão URLs que podem ser usadas para buscar o conteúdo dos campos. Se o arquivo for aberto localmente, somente o nome do arquivo no campo de container será retornado.
Exemplo 1
Retorna metadados de todas as ocorrências de tabela não especificando valores na chave tables
. Nesse caso, há uma tabela (Products) de origens (ou bases) e duas ocorrências de tabelas (Products e Products_InStock). Este exemplo usa a Função JSONSetElement para criar o objeto JSON na opção Request
.
Executar FileMaker Data API [ Select ; Target: $$result ;
JSONSetElement ( "{}" ;
[ "action" ; "metaData" ; JSONString ] ;
[ "tables" ; "" ; JSONString ]
) ]
Definir variável [ $$result ; JSONFormatElements ( $$result ) ]
Os dados JSON retornados na variável global $$result têm este formato.
{
"messages" :
[
{
"code" : "0",
"message" : "OK"
}
],
"response" :
{
"tables" :
[
{
"baseTable" : "Products",
"name" : "Products"
},
{
"baseTable" : "Products",
"name" : "Products_InStock"
}
]
}
}
Exemplo 2
Com base no layout de Products, retorna o primeiro registro no conjunto atual encontrado.
Executar FileMaker Data API [ Select ; Target: $$result ;
JSONSetElement ( "{}" ;
[ "layouts" ; "Products" ; JSONString ] ;
[ "limit" ; 1 ; JSONNumber ]
) ]
Definir variável [ $$result ; JSONFormatElements ( $$result ) ]
Os dados JSON retornados na variável global $$result têm este formato.
{
"messages" :
[
{
"code" : "0",
"message" : "OK"
}
],
"response" :
{
"data" :
[
{
"fieldData" :
{
"ID" : "FB1",
"Name" : "Donuts",
"Stock" : 43
},
"modId" : "6",
"portalData" : {},
"recordId" : "1"
}
],
"dataInfo" :
{
"database" : "Favorite Bakery",
"foundCount" : 3,
"layout" : "Products",
"returnedCount" : 1,
"table" : "Products",
"totalRecordCount" : 3
}
}
}
Exemplo 3
Com base no layout de Products, realiza uma busca por registros em que o campo Stock seja menor do que 40 e retorna o conjunto encontrado, organizado em ordem decrescente no campo Stock.
Executar FileMaker Data API [ Select ; Target: $$result ;
JSONSetElement ( "{}" ;
[ "layouts" ; "Products" ; JSONString ] ;
[ "query" ; "[ { \"Stock\":\"<40\" } ]" ; JSONArray ] ;
[ "sort" ; "[ { \"fieldName\":\"Stock\" ,
\"sortOrder\":\"descend\" } ]" ; JSONArray ]
) ]
Definir variável [ $$result ; JSONFormatElements ( $$result ) ]
Os dados JSON retornados na variável global $$result têm este formato.
{
"messages" :
[
{
"code" : "0",
"message" : "OK"
}
],
"response" :
{
"data" :
[
{
"fieldData" :
{
"ID" : "FB3",
"Name" : "Baguette",
"Stock" : 34
},
"modId" : "1",
"portalData" : {},
"recordId" : "7"
},
{
"fieldData" :
{
"ID" : "FB2",
"Name" : "Chocolate Cake",
"Stock" : 23
},
"modId" : "1",
"portalData" : {},
"recordId" : "6"
}
],
"dataInfo" :
{
"database" : "Favorite Bakery",
"foundCount" : 2,
"layout" : "Products",
"returnedCount" : 2,
"table" : "Products",
"totalRecordCount" : 3
}
}
}
Exemplo 4
Com base no layout de Products, retorna o primeiro registro na tabela associada ao layout de Products e, se houver linhas do portal, retorna os primeiros 2 registros depois de pular os 2 primeiros.
Executar FileMaker Data API [ Selecionar ; Destino: $$result ;
JSONSetElement ( "{}" ;
[ "layouts" ; "Products" ; JSONString ] ;
[ "limit" ; 1 ; JSONNumber ] ;
[ "['limit.RelatedProducts']" ; 2; JSONNumber ] ;
[ "['offset.RelatedProducts']" ; 2 ; JSONNumber ]
) ]
Definir variável [ $$result ; JSONFormatElements ( $$result ) ]
Os dados JSON retornados na variável global $$result têm este formato.
{
"messages" :
[
{
"code" : "0",
"message" : "OK"
}
],
"response" :
{
"data" :
[
{
"fieldData" :
{
"ID" : "FB1",
"Name" : "Donuts",
"Stock" : 43
},
"modId" : "6",
"portalData" : {
"RelatedProducts" :
[
{
"ID" : "FB4",
"Name" : "Donut Holes",
"Stock" : 53
},
{
"ID" : "FB5",
"Name" : "Short Cake",
"Stock" : 15
}
]
},
"recordId" : "1"
}
],
"dataInfo" :
{
"database" : "Favorite Bakery",
"foundCount" : 3,
"layout" : "Products",
"returnedCount" : 1,
"table" : "Products",
"totalRecordCount" : 6
}
}
}
Exemplo 5
Com base no layout Produtos, modifica o registro especificado por recordId
, atualizando os valores dos campos Estoque e Nome.
Execute FileMaker Data API [ Select ; Target: $$result ;
JSONSetElement ( "{}" ;
[ "action" ; "update" ; JSONString ] ;
[ "layouts" ; "Products" ; JSONString ] ;
[ "recordId" ; "4" ; JSONString ] ;
[ "fieldData" ; "{ \"Estoque\" : 14 ,
\"Nome\" : \"Bolo de baunilha, grande\" }" ; JSONObject ]
) ]
Set Variable [ $$result ; JSONFormatElements ( $$result ) ]
Os dados JSON retornados na variável global $$result têm este formato.
{
"mensagens" :
[
{
"código" : "0",
"mensagem" : "OK"
}
],
"resposta" :
{
"modId" : "6"
}
}
Se o registro especificado por recordId
não existisse, Get(LastError) retornaria 101 e Get(LastErrorDetail) retornaria "Registro ausente", que seria o mesmo que código
e mensagem
em $$result.
Exemplo 6
Com base no layout Produtos, cria um registro e define os valores dos campos Estoque, ID e Nome. Como o campo ID está definido para inserir automaticamente um número de série e a opção Proibir modificação do valor durante a entrada de dados está ativada, definir a chave prohibitmode
como script
no objeto options
substitui esse requisito de entrada automática e define o campo de ID conforme especificado.
Executar FileMaker Data API [ Selecionar ; Destino: $$result ;
JSONSetElement ( "{}" ;
[ "action" ; "create" ; JSONString ] ;
[ "layouts" ; “Products" ; JSONString ] ;
[ "options" ; "{ \"prohibitmode\" : \"script\" }" ; JSONObject ] ;
[ "fieldData" ; "{ \”Estoque\" : 14 ,
\"ID\" : \"FB42\" ,
\”Nome\" : \"Croissants\" }" ; JSONObject ]
) ]
Definir variável [ $$result ; JSONFormatElements ( $$result ) ]
Os dados JSON retornados na variável global $$result têm este formato.
{
"messages" :
[
{
"code" : "0",
"message" : "OK"
}
],
"response" :
{
"modId" : "0",
"recordId" : "7"
}
}
Se o campo ID também tivesse uma validação definida para exigir um valor exclusivo e um registro com o valor de ID de "FB42" já existisse, então Get(LastError) retornaria 504 e Get(LastErrorDetail) retornaria "O valor no campo não é exclusivo, conforme exigido nas opções de entrada de validação", o que seria o mesmo que code
e message
em $$result.