使用Google App Script自定义Google条形图

时间:2013-07-24 14:22:08

标签: google-apps-script google-visualization

我目前在使用Google App Scripts配置简单图表时遇到一些问题。我似乎无法找到正确的文档以进一步发展!

我已经把所有东西都从几个电子表格中拉出来了,所以这方面很好!

我看到有多种方法可以自定义图表的外观,例如有可用的工具:

http://imagecharteditor.appspot.com/

http://code.google.com/apis/ajax/playground/?type=visualization

我想在条形图中添加颜色,就像在这个例子中一样

http://code.google.com/apis/ajax/playground/?type=visualization#image_multicolor_bar_chart

此外,在第一个链接中,还有使用范围标记工具创建剖面的选项。我希望通过这些工具,我可以将代码复制到我的App Script Chart中使用。

我能看到这个工作的唯一方法是使用.setOption(string,object)

我试过这个......

    var data = Charts.newDataTable()
        .addColumn(Charts.ColumnType.STRING, 'Month')      
        .addColumn(Charts.ColumnType.NUMBER, 'Mark Achieved')  
    for(var x=0; x < ChartData.length;x++){
        data.addRow(ChartData[x]);        
    }     
    data.build();

  var chart = Charts.newColumnChart()
      .setDataTable(data)     
      .setDimensions(1000, 600)      
      .setRange(0, 100)
      .setTitle('Test Scores')
      .setLegendPosition(Charts.Position.BOTTOM)  
      .setOption('options',{cht: 'bvs', chco: 'A2C180,3D7930', max: 100})      
      .build();          
  app.add(chart);

任何帮助都会非常感激!

修改

My Graph example

1 个答案:

答案 0 :(得分:0)

您尝试使用的选项适用于静态图像图表(现已弃用),不适用于ColumnCharts。 ColumnCharts按系列而不是数据点为条形设置颜色,因此如果需要多色条,则必须将它们分成不同的数据系列。我写了一个执行此操作的黑客(请参阅jsfiddle了解标准的javascript版本)。我阅读Visualization API的AppsScript实现似乎排除了在DataViews中使用计算列,但这里的文档可能不完整。尝试创建这样的视图:

// add one calculated column for each month
var dataViewDefinition = Charts.newDataViewDefinition().setColumns([0, {
    type: Charts.ColumnType.NUMBER,
    label: 'Mark Achieved',
    calc: function (dt, row) {
        if (dt.getValue(row, 0) == 'January') ? dt.getValue(row, 1) : null;
    }
}, {
    type: Charts.ColumnType.NUMBER,
    label: 'Mark Achieved',
    calc: function (dt, row) {
        if (dt.getValue(row, 0) == 'February') ? dt.getValue(row, 1) : null;
    }
}/*...*/]);

这可能需要进行调整,并且可能完全不起作用,在这种情况下,您必须更改电子表格的查询或重新排列电子表格的结构。

至于在图表中添加范围,您能详细说明您希望它们的外观吗?