2016-01-22 58 views
2

我有一個填充滿的Google表格,但有一列需要使用該行的url值從API獲取實時數據。在Google表格單元格中呈現JSON值

使用這樣的函數會得到我的價值:

$(function(){ 
    getPrice('www.example.com/specificJSON') 
    function getPrice(url) { 
     $.getJSON(url, function (data) { 
      console.log(parseInt(data.value)); 
      return data.value 
     }) 
    } 
}) 

但我怎麼能連結這個表?想象一下,每一行都有自己的url,它需要動態獲取值並在表格單元格中打印。有沒有一種方法可以調用我的函數從url作爲變量的單元格?我可以在單元格中打印任何字符串。

可以想像的字符串可以是這樣的:

'用getPrice(' www.example.com/specificJSON2 ')'

在加載時會變成:

另一種方法是將cyc當表完成加載並開始替換單元格的信息時,我想通過行?最好在這裏做什麼,請記住它應該有點快。

理想情況下,我想要做一樣的從源(<img src="www.thebestimage.com">),但然後jsonvalue獲取圖像。

編輯:所以與許多關於使用JSON與表格的帖子相反,我不是從JSON數據生成表格,而是需要在單個單元格中動態顯示jsondata。檢索信息已經在表格中呈現。

回答

0

我解決它通過在細胞中使用以下HTML:

'<span class="getValue" data-Id="24">Loading...</span>' 

這可以預先作爲字符串來生成。

然後使用此事件偵聽器,我可以加載數據:

google.visualization.events.addListener(table, 'ready', function(){ 
    $('.getValue').each(function(){ 
     var self = $(this) 
     var id = this.getAttribute('data-Id') 
     $.getJSON('www.getjsondatawithid/'+id, function (data) { 
      try { 
       self.text(data.text.first) //Select the JSON value. 
      } catch(err) { 
       self.text('Error') //Or set the text to error. 
      } 
     }) 
    }) 
}) 

這將取代每個單元的跨度文本。一定要在谷歌表平局選項來啓用HTML:

table.draw(data, {showRowNumber: true, width: '100%', height: '100%', allowHtml: true}); 
+0

這實際上類似於我要建議...你應該接受你自己的答案,但我會用'self.data(「ID」 );'而不是'this.getAttribute('data-Id')',當然你在幾個地方缺少分號。 –

相關問題