我一定是误解了他们的文档,但这看起来是如此简单和直接…
这里有一个非常简单的Sheets文档: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"
.
为什么?这是一个bug,还是我误解了这个API?
值得注意的是,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/