2013-02-14 61 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進行計算)。

這需要一點時間,因此您需要確保在腳本嘗試使用該值之前對其進行操作。

另外,我懷疑這會得到非常慢,如果你嘗試了很多數字。

祝你好運!

相關問題