2012-08-24 1 views
0

Я искал ключ к этому довольно долгое время и еще не нашел решения. То, что я пытаюсь сделать, это использовать общий datatable из панели мониторинга и выбрать два столбца из datatable, чтобы отображать на гистограмме. У меня есть еще три диаграммы (круговые диаграммы), которые используют эту же информацию.(Google-apps-script) Как выбрать отдельные столбцы из общего datatable для гистограммы

У меня есть фильтры двух категорий, настроенные для фильтрации информации, и хотели бы, чтобы эти фильтры делились с гистограммой.

Моим единственным решением до сих пор считалось создание второго типа данных только для гистограммы, но затем я столкнулся с проблемой общих фильтров без добавления дополнительных элементов управления.

Возможно ли вложенное .setColumns в barChart? Если возможно, я бы хотел использовать диапазоны [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; 
} 

[Edit] ответил на мой собственный вопрос. Мне просто пришлось расширять колонны.

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(); 

Иногда он просто занимает рупора

Смежные вопросы