Google apps script 谷歌应用程序脚本图表服务:脚本已完成,但未返回任何内容?

Google apps script 谷歌应用程序脚本图表服务:脚本已完成,但未返回任何内容?,google-apps-script,Google Apps Script,主要问题:为什么下面的脚本没有返回任何内容?给定版本并部署后,脚本返回“脚本已完成,但未返回任何内容” (额外问题:我可以在同一个仪表板和同一个脚本中的两个不同数据表上运行两个图表吗?) 输入是一个谷歌电子表格,有四列和一个标题行:年|月|组|计数,除组外的所有数字(单字母) 目标是按年份(201001、201002…)创建总计数折线图。理想情况下,我希望在同一脚本中生成另一个按年份分组的总计数折线图,但每次一步 由于数据没有汇总(而且我对谷歌应用程序脚本还不熟悉,除了旋转电子表格本身之外,找不

主要问题:为什么下面的脚本没有返回任何内容?给定版本并部署后,脚本返回“脚本已完成,但未返回任何内容”

(额外问题:我可以在同一个仪表板和同一个脚本中的两个不同数据表上运行两个图表吗?)

输入是一个谷歌电子表格,有四列和一个标题行:年|月|组|计数,除组外的所有数字(单字母)

目标是按年份(201001、201002…)创建总计数折线图。理想情况下,我希望在同一脚本中生成另一个按年份分组的总计数折线图,但每次一步

由于数据没有汇总(而且我对谷歌应用程序脚本还不熟悉,除了旋转电子表格本身之外,找不到任何聚合),所以我求助于散列来计算一年一个月的总数。我也会为年组做同样的事情

它可能并不优雅(我碰巧也是js的新手),但对我来说它是有意义的。可惜它不起作用。谢谢你的指点

编辑2013-04-25

试图在一个脚本中完成太多的工作,结果我迷失了方向。因此,我在脚本之外进行了聚合,创建了一个新的电子表格,并运行了在这里找到的代码:Get my 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;
}
函数doGet(){
//按年份统计
var ss=SpreadsheetApp.openById('0Atd6tVDA1d3UOI-JFKDLRHBK85Y19BCU9BNFDPNXBLVLLE');
var data=ss.getDataRange().getValues();
var yr=[];
var-mo=[];
对于(变量i=1;i
我怀疑您没有更新部署的应用程序版本。尝试使用“最新代码”开发链接(您可以在部署应用程序时从对话框中获取该链接),如果可行,请从“管理版本”菜单创建新版本,并更新部署的应用程序以使用该版本。

我忘了将
.build()
添加到我的
图表中。newLineChart()
调用


data\u yearmo.build()
显然不是必需的,但是
Charts.newLineChart()的.build()肯定是必需的。以上编辑中的链接值得称赞。

这真的与appengine有关吗?我仍然对谷歌的脚本产品感到困惑。去掉标记。我已保存并为项目提供了一个新版本,然后尝试了“最新代码”(部署应用程序):相同的错误。