【问题标题】:Fetch API information for stocks with ^ in the ticker name获取股票名称中带有 ^ 的股票的 API 信息
【发布时间】:2018-10-10 18:51:12
【问题描述】:

我需要一些帮助来调用 AlphaVantage 股票市场 API。在大多数情况下,它运行良好,但在从股票代码中带有 ^ 符号的股票中请求数据时,就会出现问题。

我通过以下代码获得 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")

作为谷歌表格公式,^ 没有问题,数据被检索

区别在哪里?

^ 是 JavaScript 字符串中的无效字符吗?
知道是什么问题吗?

【问题讨论】:

    标签: google-apps-script google-sheets urlfetch alpha-vantage


    【解决方案1】:

    插入符号 ("^") 不是有效的 URL 字符,如果您遵循 IETF 的建议,则必须进行百分比编码。这是 RFC1738 中定义的“不安全”字符之一

    使用%5E 代替^

    更一般地,将符号包装为:

    encodeURI(symbol)
    

    【讨论】:

    • 感谢您的回答。 %5E 有效。与使用 encode 相比,用 %5E 替换 ^ 是一种错误的编码还是或多或少相等?
    • 如果你硬编码没问题 - 包装只是让整个练习扩展到其他字符 - 我不熟悉你在股票代码中可能遇到的其他字符
    猜你喜欢
    • 1970-01-01
    • 2015-08-05
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多