Google图形编辑器的错误行为,此时基本上不可能为每个条形手动创建具有唯一颜色的条形图。我想使用应用程序脚本以编程方式修改现有图形,以便我可以任意为每个条形分配颜色。到目前为止,我已经尝试了下面显示的两种方法。两者都失败了,而且似乎以相同的方式 - 它们只选择数组中的第一种颜色(对于第一次尝试的情况(或第二种颜色中的第一个键值对。我在这里做语法错误还是我正在尝试的应用程序脚本甚至可能?
function changeColors() {
var sheet = SpreadsheetApp.getActiveSheet();
var chart = sheet.getCharts()[0];
chart = chart.modify()
.setOption('colors', ['red', 'blue','green', 'pink','purple', 'black', 'black'])
.build();
sheet.updateChart(chart);
}
function changeColors() {
var sheet = SpreadsheetApp.getActiveSheet();
var chart = sheet.getCharts()[0];
chart = chart.modify()
// Set the series options.
.setOption("series", {
0: {
color: 'black',
},
1: {
color: 'red'
}
})
.build();
sheet.updateChart(chart);
}
正如我回答您链接的问题一样,没有从表格UI更改条形图颜色的错误。
如果您希望使用应用程序脚本更改颜色,请使用的方法
.setOption('colors', ['red', 'blue','green', 'pink','purple', 'black', 'black'])
是正确的,您只需要确保图表的范围至少与指定的颜色一样多。
构建图表时,必须将每个条形定义为单独的范围。像这样:
function myChart()
{
var sheet = SpreadsheetApp.getActiveSheet();
var firstRange = sheet.getRange("first bar");
var secondRange = sheet.getRange("second bar");
...
var seventhRange = sheet.getRange("seventh bar");
var chartBuilder = sheet.newChart()
.setChartType(Charts.ChartType.BAR)
.addRange(firstRange)
.addRange(secondRange)
...
.addRange(seventhRange)
.setOption('colors', ['red', 'blue','green', 'pink','purple', 'black', 'black'])
.setPosition(1, 1, 0, 0);
var chart = chartBuilder.build();
sheet.insertChart(chart);
}
顺便说一句,如果您不指定颜色,图表生成器默认情况下将以不同的颜色绘制每个范围。