Google Visualization Query&表格 - 不为简单的电子表格返回正确的行

时间:2015-09-14 20:18:01

标签: javascript google-apps-script google-sheets google-visualization googlevis

我必须误解他们的文档,但这看起来如此简单明了......

我这里有一个非常简单的表格文件:https://docs.google.com/spreadsheets/d/1I8PQWcldqZmCpctFPyXm5UpPgjeRYpX8dtkVxYgcy08/edit?usp=sharing

查看文档。有几行?看起来有 5 行,对吧?

让我们使用Visualization API编写一些JavaScript代码......

function displayData(response) {
    var data = response.getDataTable();
    console.log(data.getNumberOfRows());
}

var opts = {sendMethod: 'auto'};

var query = new google.visualization.Query('https://docs.google.com/spreadsheets/d/1I8PQWcldqZmCpctFPyXm5UpPgjeRYpX8dtkVxYgcy08/edit?usp=sharing', opts);

query.setQuery('select *');
query.send(displayData);
超级简单!从电子表格中获取所有数据,并打印行数。

但观察到的结果是 1 行。为什么1?这没有用。

当您深入了解DataTable时,您会发现它将分开的单元格连接起来,例如data.Ff[0].label === "foo one uno"

为什么?这是一个错误,还是我误解了这个API?

1 个答案:

答案 0 :(得分:1)

值得注意的是QUERY不会返回具有混合数据类型的列:

  

如果单个列中包含混合数据类型,则为多数数据类型   确定列的数据类型以供查询。少数民族   数据类型被视为空值。

以下是编辑数据源URL的解决方法:

google.load('visualization', '1', {
    callback: function () {

        var query = new google.visualization.Query('https://docs.google.com/spreadsheets/d/1I8PQWcldqZmCpctFPyXm5UpPgjeRYpX8dtkVxYgcy08/gviz/tq?tqx=out:html&tq?gid=0&headers=0&range=A1:C');
        query.send(displayData);
    }
});

function displayData(response) {

    numRows = response.getDataTable().getNumberOfRows();

    document.getElementById('data').innerHTML = numRows;
}

http://jsfiddle.net/gregpearl/zs98r3v8/