【问题标题】:Converting Google Visualization Query result into JSON将 Google 可视化查询结果转换为 JSON
【发布时间】:2020-10-16 00:20:49
【问题描述】:

我是一名初学者,尝试在 Javascript 应用程序中阅读 Google 表格,使用:https://docs.google.com/spreadsheets/d/mySheetID/gviz/tq?tq=Select%20*%20where%20A%20=%20%22Nan%22&tqx=out:JSON

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

我看到了:converting Google Visualization Query result into javascript array 解决方案似乎是:“如果您在请求中添加名为 X-DataSource-Auth 的标头,则可视化 API 将以 JSON 格式响应”。经过一天的谷歌搜索,我完全找不到我应该在哪里放置这样的标题以及它的语法应该是什么。

但是我已经 82 岁了,这件事一年比一年难熬……有人能指出我正确的方向吗?

【问题讨论】:

    标签: google-visualization google-query-language


    【解决方案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);
      });
    });
    

    【讨论】:

    • 谢谢你。您的数据演示工作正常。当我运行代码时,第一行 "google.charts.load('current', {" 给出了这个错误:test.js:3 Uncaught ReferenceError: google is not defined。谷歌搜索错误不会产生任何修复,但我假设我错过了一个图书馆。
    • 是的,需要添加 --> <script src="https://www.gstatic.com/charts/loader.js"></script>
    • 这个问题好运吗?
    • 在您的最新修复失败后,我认为我占用了您太多时间,因此未能回复。我尝试了其他几种可能的解决方案均无济于事。包含图表后我的最新错误如下:
    • 加载资源失败:net::ERR_FAILED jsapi_compiled_default_module.js:251 未捕获错误:错误处理查询:XhrHttpError:请求失败,状态=0,url=docs.google.com/spreadsheets/d/… at jsapi_compiled_default_module.js:379 at e.XD (jsapi_compiled_default_module.js:258) 在 gvjs_ok (jsapi_compiled_default_module.js:261) 在 gvjs_lk (jsapi_compiled_default_module.js:261) 在 gvjs_bk.Nna (jsapi_compiled_default_module.js:260) 在 gvjs_$j (jsapi_compiled ...跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-03
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    • 2017-10-15
    • 2013-07-18
    • 1970-01-01
    相关资源
    最近更新 更多