O Webservice não avalia com vários Argumentos [API REST]

0

Estou tentando preencher uma célula com uma resposta JSON da API coindesk usando outra célula que contém datas específicas.

Aqui está uma pequena captura de tela da fórmula:

Isso funciona somente se eu usar o argumento start e nada mais. Em qualquer outro caso, ele é avaliado como #VALUE.

Você sabe o que eu posso fazer para resolver isso?

    
por dawg 22.08.2017 / 20:22

1 resposta

0

This works only if I use the start argument and nothing else. In any other case it evaluates to #VALUE.

Na página inicial da API do coindesk :

We offer historical data from our Bitcoin Price Index through the following endpoint:

https://api.coindesk.com/v1/bpi/historical/close.json

By default, this will return the previous 31 days' worth of data.

e

?start=<VALUE>&end=<VALUE> Allows data to be returned for a specific date range. Must be listed as a pair of start and end parameters, with dates supplied in the YYYY-MM-DD format…

Se você fornecer apenas o parâmetro start, ele será ignorado e o padrão de 31 dias será retornado, mesmo se a data fornecida for inválida! Se você fornecer os dois parâmetros, as datas serão verificadas e se ou são inválidos, um erro é retornado em vez dos dados JSON.

Agora vamos ver sua planilha:

Coin    Euro        Buy Date    Units       PPU/EUR     PPU/BTC     BTC2DATE    HelpDate    HelpString
DASH    EUR 400.00  2017-08-15  2.21717893  180.4094359             #VALUE!     2017-08-16  2017-08-16
DASH    EUR 400.00  2017-08-17  1.67020458  239.4916196             #VALUE!     2017-08-18  2017-08-18

Sua fórmula BTC2DATE é:

=WEBSERVICE("https://api.coindesk.com/v1/bpi/historical/close.json?start=[@[Buy Date]]&end=[HelpDate]")

O que Daniel estava sugerindo em seu comentário à sua pergunta foi substituí-lo por:

="https://api.coindesk.com/v1/bpi/historical/close.json?start=[@[Buy Date]]&end=[HelpDate]"

para ver o URL real que está sendo passado para WEBSERVICE() . Isso acaba sendo a string literal *:

link

E aí reside o problema. Referências de células estruturadas não funcionam dentro de strings do Excel! Elas precisam ser concatenadas como referências de células normais.

E, finalmente, aqui está a solução:

=
WEBSERVICE(
  "https://api.coindesk.com/v1/bpi/historical/close.json?start="
  &TEXT([Buy Date],"yyyy-mm-dd")&"&end="
  &TEXT([HelpDate],"yyyy-mm-dd")
)

Observe que, pelo menos para o Excel 2007, as datas precisam ser convertidas. Usando apenas as referências de células brutas, os valores numéricos subjacentes são puxados.

* Com exceção de um caractere de espaço em "Data de compra", é impossível manter e um hiperlink em funcionamento.

    
por 23.08.2017 / 20:51