是否可以将应用程序脚本与Google表格一起使用,为每个条形创建具有独特颜色的条形图


由于

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

顺便说一句,如果您不指定颜色,图表生成器默认情况下将以不同的颜色绘制每个范围。

最新更新