3

晚上好!

我一直在研究使用 GAS(Google Apps 脚本)托管一小部分 javascript 的可能性,让我可以使用新的 Google 金融应用程序 API。目的是我将在涉及使用库存数据的项目中使用库存信息。我知道有几种方法可以从 Google 获取股票信息,但金融应用返回的数据更符合我们正在使用的其他来源。(这个项目的一个限制是我们有多个来源)。

我已经编写了 javascript,我可以调用 httpc:request 到从 Google 给我的脚本的 URL。在浏览器中,JS 根据我的需要返回 json 对象,但是当从 Erlang 进行调用时,我会在 ascii 列表中获取它。从检查值来看,它似乎是一个文档,开头如下:

以下是查看 json 的 javascript 和 url:

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

在使用新版本时,我一直在更新脚本,但对于为什么它没有正确返回我有点茫然。

如果有人能给我任何指示,我将不胜感激!我觉得它不打算以这种方式使用,可能只在其他谷歌产品等中使用。

干杯!

4

2 回答 2

1

有必要查看您如何部署 Web 应用程序,特别是谁有权访问应用程序,无需身份验证即可访问应配置为如图所示:

在此处输入图像描述

请参阅文档中的将脚本部署为 Web 应用程序

在我的测试中,通过运行:

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
}
于 2013-10-13T21:15:23.520 回答
0

可能您的 GET 未遵循使用 contentService 时发生的 REDIRECT。查看返回的 html,那里有一个重定向。

于 2013-10-13T20:28:44.937 回答