Google 可视化查询和工作表 -- 没有为简单的电子表格返回正确的行

Google Visualization Query & Sheets -- not returning proper rows for simple spreadsheet

我一定是误解了他们的文档,但这看起来很简单明了...

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

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

让我们使用可视化 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?

值得注意的是 QUERY 没有 return 具有混合数据类型的列:

In case of mixed data types in a single column, the majority data type determines the data type of the column for query purposes. Minority data types are considered null values.

通过编辑数据源的 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/