在Google表格单元格中呈现JSON值

时间:2016-01-22 17:18:59

标签: javascript html google-visualization getjson

我有一个填充的Google桌面,但是一列需要使用行的网址值从API获取实时数据。

使用这样的函数可以得到值:

$(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 ')'

加载后会变为:

  

24

另一种方法是在表完成加载时循环遍历行,并开始替换单元格的信息,我猜?在这里做什么最好,记住它应该有点快。

理想情况下,我想做的是从源(<img src="www.thebestimage.com">)获取图像,然后是jsonvalue。

编辑:所以与许多关于在桌面上使用JSON的帖子相反,我不是从JSON数据生成表,而是需要在单个单元格中动态显示jsondata。检索信息已在表格中呈现。

1 个答案:

答案 0 :(得分: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.
            }
        })
    })
})

这将替换每个单元格的跨度文本。请务必在Google表格绘制选项中启用HTML:

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