从谷歌工作表URL分配JSON对象到变量?

时间:2014-10-02 09:13:05

标签: javascript jquery json google-apps-script

我希望能够每24小时从谷歌电子表格文档中提取数据并使用我的html页面中的值。

我已经设法获取了我想要跟踪的单元格的JSON网址,但我不知道如何使用网址将此JSON对象转换为javascript变量。

我已经搜索过并尝试使用Jquery $ .get()和$ .getJSON()但我似乎无法使用任何东西。

Google电子表格数据单元格JSON的网址是

https://spreadsheets.google.com/feeds/cells/1r56MJc7DVUVSkQ-cYdonqdSGXh5x8nRum4dIGMN89j0/1/public/values/R29C4?alt=json-in-script&callback=importGSS

我知道这可能很简单,但我对使用JSON / Javascript非常陌生,并且一直在努力解决这个问题。

感谢您的帮助:)

1 个答案:

答案 0 :(得分:1)

返回的数据为jsonp,因此您需要在Ajax请求中指定该数据。

function getData() {
    return $.ajax({
        url: 'https://spreadsheets.google.com/feeds/cells/1r56MJc7DVUVSkQ-cYdonqdSGXh5x8nRum4dIGMN89j0/1/public/values/R29C4?alt=json-in-script&callback=importGSS',
        dataType: 'jsonp',
        jsonpCallback: 'importGSS'
    })
}

虽然你可以将数据分配给一个全局变量,但这只会让你到目前为止 - Ajax进程是异步的,你无法访问数据直到过程完成:

var obj;
getData().done(function (data) {
  obj = data;
});

// console.log(obj) here will return undefined as the process
// has not yet finished

更好地获取数据并使用它做一些事情:

function doSomethingWithData(data) {
  console.log(data);
}

getData().done(function (data) {
  doSomethingWithData(data);
});

甚至更简单:

getData().done(doSomethingWithData);