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

275
dawg

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

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

enter image description here

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

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

0
Вы проверяли, правильно ли Excel создает URL? Daniel B 6 лет назад 0
При публикации вопроса ** очень ** хорошая идея не просто опубликовать снимок экрана, но и фактическую формулу и данные электронной таблицы. (Как и в моем ответе.) Это позволяет респондентам легко копировать и вставлять данные в электронную таблицу для тестирования. robinCTS 6 лет назад 0

1 ответ на вопрос

0
robinCTS

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

Из API домашней страницы coindesk :

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

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

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

а также

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

Если вы указываете только начальный параметр, он игнорируется и возвращается значение по умолчанию 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 даты должны быть преобразованы. При использовании только необработанных ссылок на ячейки вместо этого используются базовые числовые значения.


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

Похожие вопросы