晚安!
我一直在研究使用GAS(Google Apps脚本)来托管一小部分javascript的可能性,这些javascript可让我使用新的Google财经应用api。目的是我将使用涉及股票数据使用的项目的股票信息。我知道有几种方法可以从Google获取股票信息,但是金融应用程序返回的数据更符合我们正在使用的其他来源。 (这个项目的一个限制是我们有多个来源)。
我已经编写了javascript,我可以调用httpc:请求来自Google提供给我的脚本的URL。在浏览器中,JS按我的意愿返回json对象,但是当从Erlang调用时,我将它放入ascii列表中。从检查值看,它似乎是一个文档,如:
下面是javascript和看到json的网址:
https://script.google.com/macros/s/AKfycbzEvuuQl4jkrbPCz7hf9Zv4nvIOzqAkBxL1ixslLBxmSEhksQM/exec
function doGet() {
var stock = FinanceApp.getStockInfo('LON:TSCO');
return ContentService.createTextOutput(JSON.stringify(stock))
.setMimeType(ContentService.MimeType.JSON);
}
对于erlang来说,这是一个简单的请求,但我并没有长时间使用erlang,所以也许我在这里弄乱了一些东西(URL就是上面提到的那个)。当我在命令行上测试时,我得到了crypto / ssl / inets。
{ok, {Version, Headers, Body}} = httpc:request(get, URL, []}, [], []).
我认为值得一提的是,当我从Cygwin卷曲时,我也得到了大量的HTML,我已将它包含在下面,但是如果你看到它,你会感谢我没有在这里发布它! http://pastebin.com/UtJHXjRm
我一直在更新脚本,因为我使用新版本,但我有点不知道为什么它没有正确返回。
如果有人能给我任何指示,我将非常感激!我觉得它并不打算以这种方式使用,也许只能在其他Google产品中使用。
干杯!
答案 0 :(得分:1)
有必要检查您部署Web应用程序的方式,特别是谁有权访问应用程序,无需身份验证即可进行访问,如图所示:
请参阅文档中的Deploying Your Script as a Web App。
在我的测试中,通过运行:
curl -L https://script.google.com/macros/s/************/exec
获得以下结果:
{
"priceopen":358,
"change":2.199981689453125,
"high52":388.04998779296875,
"tradetime":"2013-10-11T15:35:18.000Z",
"currency":"GBX",
"timezone":"Europe/London",
"low52":307,
"quote":357.8999938964844,
"name":"Tesco PLC",
"exchange":"LON",
"marketcap":28929273763,
"symbol":"TSCO",
"volumedelay":0,
"shares":8083060703,
"pe":23.4719295501709,
"eps":0.15248000621795654,
"price":357.8999938964844,
"has_stock_data":true,
"volumeavg":14196534,
"volume":8885809,
"changepct":0.6184935569763184,
"high":359.5,
"datadelay":0,
"low":355.8999938964844,
"closeyest":355.70001220703125
}
答案 1 :(得分:0)
可能您的GET没有遵循使用contentService时发生的REDIRECT。看看返回的html,那里有一个重定向。