6

我有一个javascript函数

function calculate() {
  var interestRate=4.5;
  ...
}

我希望interestRate 来自谷歌文档电子表格中的一个单元格。我创建了一个谷歌文档电子表格,并将利率存储在单元格 B2

我使用 Google Docs 中的“获取已发布数据的链接”功能来获取到单元格 B2 的链接。链接看起来像这样。

https://docs.google.com/spreadsheet/pub?key=....c&single=true&gid=0&range=b2&output=html

有没有办法从链接中获取值到我的 javascript 函数中?

谢谢

4

3 回答 3

5

首先,我建议将“获取已发布数据的链接”作为 csv,因为它只是 1 个字段,因此您不必解析它。如果制作了这个电子表格,并使用“获取已发布数据的链接”链接,则在这种情况下,第二个链接将获得一个只有一个字段的 csv。您将能够使用以下 js 代码获得此信息(注意我使用的是 jQuery)

$.ajax("https://docs.google.com/spreadsheet/pub?key=0Auwt3KepmdoudE1iZFVFYmlQclcxbW85YzNZSTYyUHc&single=true&gid=0&range=b5&output=csv").done(function(result){
    alert(result);
});

问候

编辑:完整代码

<!doctype>
<html>
    <head>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js">    </script>
    </head>
    <body>
        <script>
            $.ajax("https://docs.google.com/spreadsheet/pub?key=0Auwt3KepmdoudE1iZFVFYmlQclcxbW85YzNZSTYyUHc&single=true&gid=0&range=b5&output=csv").done(function(result){
                alert(result);
            });
        </script>
    </body>
</html>
于 2013-02-14T23:15:31.643 回答
1

这是可能的,但它有点邋遢,尽管存在跨站点问题。

步骤如下:

首先,您需要在 google 电子表格中创建一个读取您要使用的值的单元格,例如,如果您想要的值在电子表格的单元格 A1 中,您可以将其作为公式放入单元格 B1 中,如下所示:

="interestrate="&text(A1,"0.0")&";"

这样做是创建一个包含文本的单元格(为了说明,我假设包含 5.7 作为数字):

interestrate="5.7";

这是 javascript 中的有效语句。

然后将以下内容放入 html 页面的头部(或任何地方):

<script src="https://docs.google.com/spreadsheet/pub?key=0AgLSs-sWp9JUdDgxV3VXbUZhZ3BXUGQ3MEtyVWhYRnc&single=true&gid=0&output=txt&range=b1"></script>

(显然,为包含该新功能的电子表格设置键值)。

现在,当页面加载时,用户的浏览器将从 google 电子表格中获取单行 javascript 并执行它。因此,变量,在本例中为“interestrate”,设置为原始单元格中的值(作为字符串,因此您需要 parseFloat 来进行计算)。

这将需要一些时间,因此您需要确保在脚本尝试使用该值之前对其进行操作。

另外,我怀疑如果您尝试使用大量数字,这会变得非常慢。

祝你好运!

于 2013-04-25T14:16:57.917 回答
1

您可能会在使用同源策略时遇到问题。通常,作为安全措施,Web 浏览器不允许对不同域的 AJAX 请求。我有点惊讶ultraklon 的解决方案在firefox 中工作,所以也许这在较新的浏览器中发生了变化。不过,它似乎在 IE8 中不起作用,所以如果您需要支持该浏览器,请继续阅读。

通常,JSONP被用作绕过相同来源策略的一种方式,但在您的情况下这不是一个选项,因为谷歌文档不提供这种格式的数据。

或许最好的解决方案是通过您自己的服务器将请求代理到 google 文档,正如这个问题中所建议的那样。在您的 Web 服务器上创建一个将单元格(或单元格范围)作为参数的方法。让服务器方法从谷歌文档请求单元格数据,然后让它以 JSON 格式将此数据返回给调用者。

代理请求后,您可以使用一些 ajax 将其放入您的 javascript 代码中,如 ultraklon 的回答:

$.get('/google-docs-proxy?cell=B1', function(data) {
    alert('data');
});
于 2013-02-14T23:42:24.023 回答