Я искал ключ к этому довольно долгое время и еще не нашел решения. То, что я пытаюсь сделать, это использовать общий 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();
Спасибо, ребята. Я отмечу это как ответ, как только смогу.