0

私はかなり長い間これの手がかりを探してきましたが、まだ解決策を見つけていません。私がやろうとしているのは、ダッシュボードから共有データテーブルを使用し、データテーブル内から2つの列を選択して、棒グラフで表示することです。これと同じ情報を共有する他の3つのグラフ(円グラフ)があります。

情報をフィルタリングするために2つのカテゴリフィルターを設定していますが、これらのフィルターを棒グラフと共有したいと思います。

これまでの私の唯一の解決策は、棒グラフ専用の2番目のデータテーブルを作成することでしたが、2次コントロールを追加せずに共有フィルターの問題が発生しました。

棒グラフ内でネストされた.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 に答える