我发现很难得到这个答案。我正在寻找为我的客户创建Google Chart Dashboard的工具,并且具有Year,Month,Day过滤器,但是他们一年的记录超过4000行,我想在文件中添加更多工作表并将每年的数据值放入另一张纸。
我将如何在脚本中创建一个视图,以从所有工作表中获取所有信息并将它们放在一个视图中,以便可以将其用作Google Chart Dashboard的数据源。
我尝试在一张纸中添加20,000行,这将返回服务器错误。
任何帮助将不胜感激!
查询API一次只能从一张工作表中选择数据,因此您将不得不进行多个查询,然后在查询返回时将所有数据连接到一个DataTable中:
function drawChart () {
// use "gid" parameter to select the sheet number
// or the "sheet" parameter to select the sheet by name
var query1 = new google.visualization.Query(spreadsheetUrl + '&gid=0'); // sheet 1
var query2 = new google.visualization.Query(spreadsheetUrl + '&gid=1'); // sheet 2
var query3 = new google.visualization.Query(spreadsheetUrl + '&gid=2'); // sheet 3
// etc...
// set up each query
// eg: query1.setQuery('select a, b');
var queriesReady = [false, false, false]; // array should have a number of elements equal to the number of queries
var dataTables = [];
// readyCheck function takes the response returned by the query and the index in the "queriesReady" array to set to true
// each query should use a unique index
function readyCheck (response, index) {
if (response.isError()) {
alert('Error in query: ' + response.getMessage() + ' ' + response.getDetailedMessage());
return;
}
data[index] = response.getDataTable();
queriesReady[index] = true;
var allDone = true;
for (var i = 0; i < queriesReady.length; i++) {
allDone = allDone & queriesReady[i];
}
if (allDone) {
// merge DataTables and draw chart
}
}
query1.send(function (response) {
readyCheck(response, 0);
});
query2.send(function (response) {
readyCheck(response, 1);
});
query3.send(function (response) {
readyCheck(response, 2);
});
}
这是一个很好的解决方案,但是还有另一个错别字:
data[index] = response.getDataTable();
应该是:
dataTables[index] = response.getDataTable();