google脚本使用“^”获取URL上的炸弹

时间:2013-02-04 03:16:15

标签: google-apps-script google-sheets

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

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)

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

这可能是个错误吗?

1 个答案:

答案 0 :(得分: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);