Webservice не оценивает несколько аргументов [REST API]

Я пытаюсь заполнить ячейку ответом JSON от API-интерфейса Codesdesk, используя другую ячейку с конкретными датами.

Вот небольшой скриншот формулы:

Это работает, только если я использую аргумент начала и ничего больше. В любом другом случае он оценивается как #VALUE.

Вы знаете, что я могу сделать, чтобы решить эту проблему?

1 ответ

Решение

Это работает, только если я использую аргумент начала и ничего больше. В любом другом случае он оценивается как #VALUE.

С главной страницы API Codesdesk:

Мы предлагаем исторические данные из нашего индекса цен на биткойны через следующую конечную точку:

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

По умолчанию это вернет данные за последние 31 день.

а также

? start =& end = Позволяет возвращать данные за определенный диапазон дат. Должен быть указан как пара начальных и конечных параметров с датами, предоставленными в формате ГГГГ-ММ-ДД…

Если вы указываете только начальный параметр, он игнорируется и возвращается значение по умолчанию 31 день, даже если указанная дата недействительна! Если вы укажете оба параметра, тогда даты будут проверены и, если они недействительны, вместо данных JSON будет возвращена ошибка.


Теперь давайте посмотрим на вашу таблицу:

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

Ваша формула BTC2DATE:

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

Что Даниэль предлагал в своем комментарии к вашему вопросу, так это заменить его следующим:

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

чтобы увидеть фактический URL, который передается WEBSERVICE(), Это оказывается буквальная строка *:

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

И в этом заключается проблема. Структурированные ссылки на ячейки не работают внутри строк Excel! Они должны быть объединены как обычные ссылки на ячейки.

И вот, наконец, вот решение:

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

Обратите внимание, что по крайней мере для Excel 2007 даты должны быть преобразованы. При использовании только необработанных ссылок на ячейки вместо этого используются базовые числовые значения.


*За исключением символа пробела в "дате покупки", его невозможно сохранить и иметь работающую гиперссылку.

Другие вопросы по тегам