主要问题:为什么下面的脚本不返回任何东西?当给定版本并部署时,脚本返回'脚本完成但没有返回任何内容'。Google Apps脚本图表服务:脚本已完成但未返回任何内容?
(奖金的问题:我可以在相同的仪表盘内,并在同一个脚本中运行两个不同的数据表两个图表?)
输入是一个谷歌电子表格有四个列标题行:年|月| Group | Count,除Group(单个字母)以外的所有数字。
目标是创建一个年总计数折线图(201001,201002 ...)。理想情况下,我想在同一个脚本内生成另一个按年份组计数的折线图,但一次只能一步...
由于数据没有汇总(而且我是新手谷歌应用程序脚本,并且无法在电子表格本身之外找到任何聚合),我使用散列来计算年度总数。我会为年份组做同样的事情。
它可能不够高雅(我碰巧也是js的新手),但它对我来说很有意义。太糟糕了,它不起作用。感谢指针。
编辑2013年4月25日
试图让在一个脚本太多做,失去了我的立足点。所以我已经在脚本之外进行了聚合,创建了一个新的电子表格,并运行了在这里找到的代码https://sites.google.com/site/appsscripttutorial/chart-services/line-chart:得到了我的折线图。
function doGet(){
// counts by yearmo
var ss = SpreadsheetApp.openById('0Atd6tVDA1d3UOI-jfkdlRHbk85Y19BcU9BNFdPNXBlVlE');
var data = ss.getDataRange().getValues();
var yr = [];
var mo = [];
for (var i = 1; i < data.length; i++) {
yr[data[i][0]] = 0;
mo[data[i][1]] = 0;
}
Logger.log(yrLvls = Object.keys(yr));
Logger.log(moLvls = Object.keys(mo));
// initialize hash
var yearmo = [];
for (var i = 0; i < yrLvls.length; i++){
for (var j = 0; j < moLvls.length; j++){
var key = yrLvls[i] + '-' + moLvls[j]
yearmo[ key ] = 0;
}
}
// aggregation
for (var i = 1; i < data.length; i++) {
yearmo[ data[i][0] + '-' + data[i][1] ] += data[i][3];
}
// check
var values = Object.keys(yearmo).map(function(key){
return yearmo[key];
});
Logger.log(values);
// Year Mo
Logger.log("--------------");
var data_yearmo = Charts.newDataTable()
.addColumn(Charts.ColumnType.STRING, 'YearMo')
.addColumn(Charts.ColumnType.NUMBER, 'Count');
Logger.log(Object.keys(yearmo));
for (key in Object.keys(yearmo)) {
Logger.log(key);
data_yearmo.addRow( [ key , yearmo[key] ] );
}
data_yearmo.build()
var lineChart_yearmo = Charts.newLineChart()
.setTitle('Counts')
.setXAxisTitle('YearMo')
.setYAxisTitle('Counts')
.setCurveStyle(Charts.CurveStyle.SMOOTH)
.setPointStyle(Charts.PointStyle.MEDIUM)
.setDataTable(data_yearmo);
var uiApp = UiApp.createApplication().setTitle('Yearmo');
uiApp.add(lineChart_yearmo);
return uiApp;
}
这确实与appengine有什么关系? – 2013-04-25 05:39:31
我仍然对Google的脚本产品感到困惑。取下标签。 – user2105469 2013-04-25 12:38:46