2013-02-14 60 views
6

的价值我有一个JavaScript函数充分利用谷歌文档电子表格单元格为JavaScript

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

我想的InterestRate来自于谷歌文档电子表格的单元格。 我创建了Google文档电子表格,并将利率存储在单元格B2中。我使用Google文档中的“获取发布数据的链接”功能获取指向单元格B2的链接。链接看起来像这样。

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

反正是有得到从链接价值到我的javascript功能?

感谢

回答

4

首先,我会建议是“获取链接到已发布数据”为CSV,因为它只是1场,所以你不必解析它。 如果做了这个spreadsheet,并作出link with "Get a link to Published Data",在这种情况下,这第二个链接将得到一个只有一个字段的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> 
+2

你测试过了吗?我怀疑它会因跨域问题而无法正常工作。 – Oliver 2013-02-14 23:16:12

+0

适合我奥利弗,我有代码,我会编辑答案,以便你可以复制粘贴它,如果你想尝试 – ultraklon 2013-02-14 23:24:19

+0

怪异的,你是非常正确的:它在Firefox中工作正常。我不确定是否由于跨域问题而导致IE8失败,或者IE浏览器不好 - 我不明白为什么XSS有时可以正常工作,有时却不正常。 – Oliver 2013-02-14 23:32:58

1

您可能运行与Same origin policy陷入困境。通常,Web浏览器不允许将AJAX请求作为安全措施应用到不同的域。我很惊讶ultraklon的解决方案可以在Firefox中使用,所以在新的浏览器中可能会有所改变。它似乎在IE8中不起作用,所以如果您需要支持该浏览器,请继续阅读。

通常,JSONP用作围绕相同原产地政策的一种方式,但这不适用于您的情况,因为Google文档不提供此格式的数据。

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

一旦请求代理,你可以到你带着几分阿贾克斯的javascript代码,如ultraklon的回答是:

$.get('/google-docs-proxy?cell=B1', function(data) { 
    alert('data'); 
}); 
1

这是可能的,但它是一个有点邋遢,尽管交现场问题。

的步骤如下:

首先,你需要创建一个谷歌电子表格,上面写着你要使用的值,例如,如果你想要的值是在电子表格的单元格A1内的电池你

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

这里做的事情是创建一个包含文本(为了说明,我认为包含5单元:可以在B1单元格如下把这个作为一个公式。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> 

(显然是把你的电子表格中的键值右其中包含新功能)。

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

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

另外,我怀疑这会得到非常慢,如果你尝试了很多数字。

祝你好运!

相关问题