如何更改垂直轴的数字格式? (在Apps脚本电子表格服务中使用EmbeddedChartBuilder时)

时间:2017-09-16 11:34:12

标签: google-apps-script google-sheets google-visualization

我的Google表格中有一个(容器绑定)脚本。使用此脚本,我根据工作表中的数据创建一个图表。见图:

Sheet and Chart

我使用的应用脚本( SCRIPT 1 )是:

/**
 * @OnlyCurrentDoc
 */

function buildChart() {
  //get the sheet
  var sheet = SpreadsheetApp.getActiveSheet()
  //create a new chart
  var chart = sheet.newChart()
    //basics
    .setChartType(Charts.ChartType.COLUMN)
    .addRange(sheet.getRange("D1:H8"))
    .setPosition(10, 10, 0, 0)
    .setOption('isStacked', 'TRUE')
    //title
    .setOption('title', 'Cost Price Development - Stage 3')
    .setOption('titleTextStyle', {fontSize: 12})
    //legend
    .setOption('legend.position', 'none') 
    //vertical axis
    .setOption('vAxes', {0: {title: '€', format: 'short', textStyle: {fontSize: 10}, titleTextStyle: {fontSize : 8}, viewWindow: {min: 79000000}}})  
    //horizontal axis
    .setOption('hAxis.title', 'cost price changes')
    .setOption('hAxis.titleTextStyle', {fontSize : 8})
    .setOption('hAxis.textStyle', {fontSize : 8})
    //chart height
    .setOption('height', 250)
    //colors series
    .setOption('colors', ['tranparant', '#659CEF', 'red', 'green'])
    .build();
  // Insert chart in sheet
  sheet.insertChart(chart);
}

目前,(如上图所示)纵轴上的数字范围为79,000,000到81,500,000。但是,我想改变这些数字的格式,以便它们显示为数百万:即从79M到81.5M。

使用 setOptions()方法,我成功设置了许多选项。但不知何故,选项 vAxis.format 不会改变vAxis数字的格式。正如您在完整脚本中看到的,以下行定义了不同的vAxis选项:

.setOption('vAxes', {0: {title: '€', format: 'short', textStyle: {fontSize: 10}, titleTextStyle: {fontSize : 8}, viewWindow: {min: 79000000}}})

只有格式:'简短'似乎没有效果。

随后,我更改了上面的脚本,以便定义垂直轴选项的方式与定义水平轴的方式相同。 SCRIPT 2 版本下方:

// create waterfall chart
function waterfallChart() {
  //get the sheet
  var sheet = SpreadsheetApp.getActiveSheet();
  //create a new chart
  var chart = sheet.newChart()
    //basics
    .setChartType(Charts.ChartType.COLUMN)
    .addRange(sheet.getRange("g1:k8"))
    .setPosition(10, 10, 0, 0)
    .setOption('isStacked', 'TRUE')
    //title
    .setOption('title', 'Cost Price Development - Stage 3')
    .setOption('titleTextStyle', {fontSize: 12})
    //legend
    .setOption('legend.position', 'none') 
    //vertical axis
    //.setOption('vAxes', {0: {title: '€', format: 'short', textStyle: {fontSize: 10}, titleTextStyle: {fontSize : 8}, viewWindow: {min: 79000000}}})
    .setOption('vAxis.title', '€')
    .setOption('vAxis.format', 'short')
    .setOption('vAxis.textStyle', {fontSize: 10})
    .setOption('vAxis.textStyle', {fontSize: 10})
    .setOption('vAxis.titleTextStyle', {fontSize: 8})
    .setOption('vAxis.viewWindow', {min: 79000000})
    //horizontal axis
    .setOption('hAxis.title', 'cost price changes')
    .setOption('hAxis.titleTextStyle', {fontSize : 8})
    .setOption('hAxis.textStyle', {fontSize : 8})
    //chart height
    .setOption('height', 250)
    //colors series
    .setOption('colors', ['tranparant', '#659CEF', 'red', 'green'])
    .build();
  // Insert chart in sheet
  sheet.insertChart(chart);
}

然而,使用 SCRIPT 2 代码所有已定义的垂直轴选项

setOption('vAxis.title', '€')
        .setOption('vAxis.format', 'short')
        .setOption('vAxis.textStyle', {fontSize: 10})
        .setOption('vAxis.textStyle', {fontSize: 10})
        .setOption('vAxis.titleTextStyle', {fontSize: 8})
        .setOption('vAxis.viewWindow', {min: 79000000})

对图表没有影响;看截图:

chart 2 with the

总结:

  • SCRIPT 1 会生成一个图表,其中包含大多数选项,因此可见;只有垂直轴数字格式定义不会在图表中被接管。
  • 脚本2 会产生一个图表,其中图表中没有任何已定义的选项可见。

所以,我的问题是:我必须使用哪些代码才能在图表中接管垂直轴的所有已定义选项?

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

尝试使用vAxis显式设置选项,而不是一次性...

.setOption('vAxis.format', 'short')