1

出于某种原因,这两种方法都有效:

var fetchString="http://ichart.finance.yahoo.com/table.csv?s=SPY&a=1&b=4&c=2011&d=1e=4&f=2013&g=d"
var response = UrlFetchApp.fetch(fetchString)


var fetchString="http://ichart.finance.yahoo.com/table.csv?s=IBM&a=1&b=4&c=2011&d=1e=4&f=2013&g=d"
var response = UrlFetchApp.fetch(fetchString)

但这不起作用:

var fetchString="http://ichart.finance.yahoo.com/table.csv?s=^GSPC&a=1&b=4&c=2011&d=1e=4&f=2013&g=d"
var response = UrlFetchApp.fetch(fetchString)

这也不起作用:

var fetchString="http://ichart.finance.yahoo.com/table.csv?s=^HSI&a=1&b=4&c=2011&d=1e=4&f=2013&g=d"
var response = UrlFetchApp.fetch(fetchString)

似乎“^”正在扔掉它?但是,如果您将该 url 粘贴到任何浏览器中,数据就会出现。有人知道这里发生了什么吗?

这可能是一个错误吗?

4

1 回答 1

2

来自RFC 1738规范:

因此,只有字母数字、特殊字符“$-_.+!*'()”和用于其保留目的的保留字符可以在 URL 中未编码地使用。

如果您对上面列出的特殊字符和保留字符以外的特殊字符进行编码,它将起作用。浏览器会自动执行此操作。

这是一个工作代码。

var fetchString="http://ichart.finance.yahoo.com/table.csv?s="+encodeURIComponent('^')+"HSI&a=1&b=4&c=2011&d=1e=4&f=2013&g=d";
  var response = UrlFetchApp.fetch(fetchString);
于 2013-02-04T04:25:29.170 回答