Получить информацию API для акций с ^ в названии тикера

Мне нужна помощь в вызове 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 ответ

Решение

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

использование %5E на месте ^,

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

encodeURI(symbol)
Другие вопросы по тегам