使用 Google 表格宏创建具有计数聚合的图表时出现意外行为
Unexpected behaviour when using Google Sheets Macros to create Charts with Count Aggregation
我想创建一个宏来根据 2 列的信息创建图表(如下图所示):
我手动创建的图表如下所示,其中图表中的每一列都代表在该确切时间发生的交易数量,使用计数聚合功能:
我现在遇到的问题是,尽管宏明确说明要在第一个系列上使用 Count Aggregate 函数,但它似乎默认为 Sum Aggregate:
function CreateMaximumsChart() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange("G1").activate();
var sheet = spreadsheet.getActiveSheet();
chart = sheet
.newChart()
.asColumnChart()
.addRange(spreadsheet.getRange("H1:H"))
.addRange(spreadsheet.getRange("G1:G"))
.setMergeStrategy(Charts.ChartMergeStrategy.MERGE_COLUMNS)
.setTransposeRowsAndColumns(false)
.setNumHeaders(0)
.setHiddenDimensionStrategy(Charts.ChartHiddenDimensionStrategy.IGNORE_BOTH)
.setOption("applyAggregateData", 0)
.setOption("bubble.stroke", "#000000")
.setOption("useFirstColumnAsDomain", true)
.setOption("isStacked", "false")
.setOption("title", "Maximums")
.setOption("series.0.aggregateFunction", "count")
.setPosition(8, 5, 44, 20)
.build();
sheet.insertChart(chart);
}
创建此图表的结果:
我做错了什么吗?宏代码在我这边看起来不错,这可能是 Google Sheets 的错误吗?
如果您注释掉添加 G1:G
范围的行,因为您没有将它用于图表,它会给出与上面相同的结果。
function CreateMaximumsChart() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange("G1").activate();
var sheet = spreadsheet.getActiveSheet();
chart = sheet
.newChart()
.asColumnChart()
.addRange(spreadsheet.getRange("H1:H"))
// .addRange(spreadsheet.getRange("G1:G")) // Remove this line
.setMergeStrategy(Charts.ChartMergeStrategy.MERGE_COLUMNS)
.setTransposeRowsAndColumns(false)
.setNumHeaders(0)
.setHiddenDimensionStrategy(Charts.ChartHiddenDimensionStrategy.IGNORE_BOTH)
.setOption("applyAggregateData", 0)
.setOption("bubble.stroke", "#000000")
.setOption("useFirstColumnAsDomain", true)
.setOption("isStacked", "false")
.setOption("title", "Maximums")
.setOption("series.0.aggregateFunction", "count")
.setPosition(8, 5, 44, 20)
.build();
sheet.insertChart(chart);
}
问题似乎是您在图表中添加了一个不需要生成图表的范围。
我想创建一个宏来根据 2 列的信息创建图表(如下图所示):
我手动创建的图表如下所示,其中图表中的每一列都代表在该确切时间发生的交易数量,使用计数聚合功能:
我现在遇到的问题是,尽管宏明确说明要在第一个系列上使用 Count Aggregate 函数,但它似乎默认为 Sum Aggregate:
function CreateMaximumsChart() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange("G1").activate();
var sheet = spreadsheet.getActiveSheet();
chart = sheet
.newChart()
.asColumnChart()
.addRange(spreadsheet.getRange("H1:H"))
.addRange(spreadsheet.getRange("G1:G"))
.setMergeStrategy(Charts.ChartMergeStrategy.MERGE_COLUMNS)
.setTransposeRowsAndColumns(false)
.setNumHeaders(0)
.setHiddenDimensionStrategy(Charts.ChartHiddenDimensionStrategy.IGNORE_BOTH)
.setOption("applyAggregateData", 0)
.setOption("bubble.stroke", "#000000")
.setOption("useFirstColumnAsDomain", true)
.setOption("isStacked", "false")
.setOption("title", "Maximums")
.setOption("series.0.aggregateFunction", "count")
.setPosition(8, 5, 44, 20)
.build();
sheet.insertChart(chart);
}
创建此图表的结果:
我做错了什么吗?宏代码在我这边看起来不错,这可能是 Google Sheets 的错误吗?
如果您注释掉添加 G1:G
范围的行,因为您没有将它用于图表,它会给出与上面相同的结果。
function CreateMaximumsChart() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange("G1").activate();
var sheet = spreadsheet.getActiveSheet();
chart = sheet
.newChart()
.asColumnChart()
.addRange(spreadsheet.getRange("H1:H"))
// .addRange(spreadsheet.getRange("G1:G")) // Remove this line
.setMergeStrategy(Charts.ChartMergeStrategy.MERGE_COLUMNS)
.setTransposeRowsAndColumns(false)
.setNumHeaders(0)
.setHiddenDimensionStrategy(Charts.ChartHiddenDimensionStrategy.IGNORE_BOTH)
.setOption("applyAggregateData", 0)
.setOption("bubble.stroke", "#000000")
.setOption("useFirstColumnAsDomain", true)
.setOption("isStacked", "false")
.setOption("title", "Maximums")
.setOption("series.0.aggregateFunction", "count")
.setPosition(8, 5, 44, 20)
.build();
sheet.insertChart(chart);
}
问题似乎是您在图表中添加了一个不需要生成图表的范围。