2012-08-24 12 views
0

我已經搜索了很長一段時間的線索,並且還沒有找到解決方案。我想要做的是使用儀表板中的共享數據表,並從數據表中選擇兩列以顯示在條形圖中。我還有另外三個圖表(餅圖),它們共享相同的信息。(Google-apps-script)如何從條形圖的共享數據表中選擇單獨的列

我有兩個類別過濾器設置爲過濾信息,並希望這些過濾器與條形圖共享。

到目前爲止,我唯一的解決方案就是爲條形圖創建第二個數據表,但後來我遇到了共享過濾器的問題,而沒有添加輔助控件。

是否有可能在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(); 

謝謝大家。我會盡快將其標記爲已回答。

回答

0

如上所述...

我只是不得不延長列:

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

有時只需一個傳聲筒

相關問題