Главный вопрос: почему сценарий ниже не возвращает ничего? Когда задана версия и развертывается, скрипт возвращает «Сценарий завершен, но ничего не возвращает».Службы скриптов Google Apps: сценарий завершен, но ничего не возвращает?
(Bonus вопрос: могу ли я запустить две карты на двух разных DataTables в пределах одной и той же панели приборов и в пределах того же сценария?)
вход представляет собой электронную таблицу Google с четырьмя колоннами и строка заголовка: Год | Месяц | Group | Count, все числительные, кроме Group (однобуквенные).
Целью является создание линейной диаграммы общего количества по годам (201001, 201002 ...). В идеале я хотел бы создать еще одну линейную диаграмму общего количества по годам в одном и том же скрипте, но один шаг за раз ...
Поскольку данные не свернуты (и я новичок в скрипт Google Apps и не может найти какую-либо агрегирование за пределами поворота самой электронной таблицы), я прибегаю к хэшам, чтобы подсчитать количество за год. Я буду делать то же самое за год-группы.
Это может быть не изящно (я тоже не знаком с js), но это имеет смысл для меня. Жаль, что это не работает. Спасибо за указатели.
EDIT 2013-04-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? –
Я все еще путаюсь с предложениями для написания Google. Снял ярлык. – user2105469