将Google可视化查询结果转换为JSON

时间:2020-10-16 00:20:49

标签: google-visualization google-query-language

我是初学者,尝试使用https://docs.google.com/spreadsheets/d/mySheetID/gviz/tq?tq=Select%20*%20where%20A%20=%20%22Nan%22&tqx=out:JSON

在Javascript应用中阅读Google表格。

我可以访问工作表中的该行并将其另存为JSON,从而得到一个内容为“ / O_o / google.visualization.Query.setResponse ...“,这是我无法在javascript中进一步处理的文件。

我看到:converting Google Visualization Query result into javascript array 解决方案似乎是:“如果在请求中添加名为X-DataSource-Auth的标头,则Visualization API将以JSON格式响应”。经过一天的搜索,我完全无法找到应该放置此类标头的位置及其语法。

但是那时我82岁,而且这东西一年比一年变得越来越困难……有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

收到查询的响应后,
您可以将响应转换为Google data table

var dataTable = response.getDataTable();

,并且Google数据表具有method,可将数据表转换为JSON。

var jsonData = dataTable.toJSON();

这将返回JSON字符串。

如果您随后想使用JavaScript使用JSON,
您可以解析字符串...

jsonData = JSON.parse(jsonData);

JSON将是具有两个属性colsrows的对象。
您可以看到JSON结果here ...

的示例

有关使用以下代码的工作示例,请参见此小提琴...

https://jsfiddle.net/WhiteHat/5mu9wnbz/1/

google.charts.load('current', {
  packages: ['corechart']
}).then(function () {
  var query = new google.visualization.Query('https://docs.google.com/spreadsheets/d/1M3wQgKg3JBF6_hzv1xWONP7HWVYoOvJ1jPbB27IUg94/gviz/tq?gid=0&headers=1');
  query.send(function (response) {
    if (response.isError()) {
      console.log('Error in query: ' + response.getMessage() + ' ' + response.getDetailedMessage());
      return;
    };

    var dataTable = response.getDataTable();
    var jsonData = dataTable.toJSON();

    jsonData = JSON.parse(jsonData);
    document.getElementById('cols').innerHTML = jsonData.cols.length;
    document.getElementById('rows').innerHTML = jsonData.rows.length;
    console.log(jsonData);
  });
});
相关问题