0

我已经搜索了很长一段时间的线索,但还没有找到解决方案。我要做的是使用仪表板中的共享数据表,并从数据表中选择两列以显示在条形图中。我还有其他三个共享相同信息的图表(饼图)。

我设置了两个类别过滤器来过滤信息,并希望与条形图共享这些过滤器。

到目前为止,我唯一的解决方案是专门为条形图创建第二个数据表,但后来我遇到了共享过滤器的问题,而没有添加辅助控件。

是否可以在 barChart 中进行嵌套的 .setColumns?如果可能的话,我希望能够利用范围 [0,3] 和 [0,4]。

非常感谢您能提供的任何帮助。代码如下:

 function doGet() {
   var uiApp = UiApp.createApplication();
   var ss = SpreadsheetApp.openById('0AqAulwN3maXQdE1TanZFUlZ2NVR5UHMzRUlfWUM2dUE');
   var datasource = ss.getRangeByName("dashRange").getValues();
   Logger.log(datasource);
   var data = Charts.newDataTable()
       .addColumn(Charts.ColumnType.STRING, datasource [0] [0])
       .addColumn(Charts.ColumnType.STRING, datasource [0] [1])
       .addColumn(Charts.ColumnType.STRING, datasource [0] [2])
       .addColumn(Charts.ColumnType.NUMBER, datasource [0] [3])
       .addColumn(Charts.ColumnType.NUMBER, datasource [0] [4])
       .addColumn(Charts.ColumnType.NUMBER, datasource [0] [5])
       .addColumn(Charts.ColumnType.NUMBER, datasource [0] [6])
       .addColumn(Charts.ColumnType.NUMBER, datasource [0] [7])
       .addColumn(Charts.ColumnType.NUMBER, datasource [0] [8])
       for (i=1;i<=datasource.length-1;i++){
         Logger.log(datasource [i]);
         data.addRow([datasource [i] [0], datasource [i] [1], datasource [i] [2], datasource [i] [3], datasource [i] [4], datasource [i] [5], datasource [i] [6], datasource [i] [7], datasource [i] [8]])
       };

   data.build();

   var stationFilter = Charts.newCategoryFilter()
       .setFilterColumnLabel("Station")
       .build();

   var divisionFilter = Charts.newCategoryFilter()
       .setFilterColumnLabel("Division")
       .build();

   var dayChart = Charts.newPieChart()
       .setDataViewDefinition(Charts.newDataViewDefinition()
                              .setColumns([0,6]))
       .setTitle("Revenue Today")
       .build();

   var mtdChart = Charts.newPieChart()
       .setDataViewDefinition(Charts.newDataViewDefinition()
                              .setColumns([0,7]))
       .setTitle("Revenue MTD")
       .build();

   var ytdChart = Charts.newPieChart()
       .setDataViewDefinition(Charts.newDataViewDefinition()
                              .setColumns([0,8]))
       .setTitle("Revenue YTD")
       .build();

   var barChart = Charts.newBarChart()
       .setDataViewDefinition(Charts.newDataViewDefinition()
                              .setColumns([0,4]))
       .setTitle("Utilization")
       .setRange(0,20)
       .build();

   var tableChart = Charts.newTableChart()
       .setDimensions(800, 500)
       .build();

   var dashboard = Charts.newDashboardPanel()
       .setDataTable(data)
       .bind([stationFilter, divisionFilter], [dayChart, mtdChart, ytdChart, barChart, tableChart])
       .build();
   dashboard.add(uiApp.createVerticalPanel()
                 .add(uiApp.createHorizontalPanel()
                      .add(divisionFilter).add(stationFilter)
                      .setSpacing(70))
                 .add(uiApp.createHorizontalPanel()
                      .add(dayChart).add(mtdChart).add(ytdChart)
                      .setSpacing(10))
                 .add(uiApp.createHorizontalPanel()
                      .add(barChart).add(tableChart)
                      .setSpacing(10)));
   uiApp.add(dashboard);
   return uiApp;
 }

[编辑] 回答了我自己的问题。我只需要扩展列。

var barChart = Charts.newBarChart()
       .setDataViewDefinition(Charts.newDataViewDefinition()
                              .setColumns([0,4,3]))
       .setColors(["green", "red"])
       .setStacked()
       .setTitle("Utilization")
       .setRange(0,20)
       .build();

谢谢各位。我会尽快将其标记为已回答。

4

1 回答 1

0

如上所述...

我只需要扩展列:

var barChart = Charts.newBarChart()
       .setDataViewDefinition(Charts.newDataViewDefinition()
                              .setColumns([0,4,3]))
       .setColors(["green", "red"])
       .setStacked()
       .setTitle("Utilization")
       .setRange(0,20)
       .build();

有时只需要一个共鸣板

于 2012-08-24T19:13:34.877 回答