Получить информацию API для акций с ^ в названии тикера - PullRequest
0 голосов
/ 04 сентября 2018

Мне нужна помощь по вызову API фондового рынка AlphaVantage. По большей части это работает хорошо, но когда дело доходит до запроса данных от акций, которые имеют символ ^ в тикере, что-то идет не так.

Я получаю ответ API с этим кодом:

var url = "https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol=^vvix&apikey=<KEY>", 
   response = UrlFetchApp.fetch(url),
   json = JSON.parse(response);
Logger.log(json);

и получите эту ошибку:

Неверный аргумент: https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&

Символ тикера запрашиваемой акции - ^vvix. Если я заменю символ на vix (другой действительный тикер), код сработает. Таким образом, я предполагаю, что ошибка связана со знаком ^, но знак ^ является частью символа тикера.

Если я использую

=IMPORTDATA("https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol=^vvix&apikey=K9D4PO855OG03KNM")

как формула Google Sheets, ^ не является проблемой, и данные извлекаются

Где разница?

Является ли ^ недопустимым символом в строке JavaScript?
Есть идеи, в чем проблема?

1 Ответ

0 голосов
/ 04 сентября 2018

Символ каретки («^») НЕ является допустимым символом URL и должен быть закодирован в процентах, если вы следуете рекомендациям IETF. Это один из «небезопасных» символов, определенных в RFC1738

Используйте %5E вместо ^.

В общем, оберните символ:

encodeURI(symbol)
...