我正在尝试使用测试数据创建一个简单的图表,以使用 Apps 脚本生成图表。我也使用 ChatGPT 来排除故障,但到目前为止还没有什么乐趣。在生成的图表中,该系列没有名称,因此图表列和图表图例为空白。
如何获取数据列和图例以将标题行文本显示为标题?
这是数据(2 行,导出为 CSV,以便我可以在此处显示):
A,B,C,D,E,F,G,H,I,J,K,L,M
227,3,3,3.666666667,3.333333333,3,4,3.666666667,3.333333333,3.5,2.5,4,3
这是创建图表的测试代码:
function createTestChart() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("TestSheet");
// Define the range for the chart (including headers)
var chartRange = sheet.getRange("A1:M2");
// Create a column chart
var chartBuilder = sheet.newChart()
.setChartType(Charts.ChartType.COLUMN)
.addRange(chartRange)
.setPosition(5, 5, 0, 0)
.setOption('title', 'Test Chart from A1:M2');
var chart = chartBuilder.build();
sheet.insertChart(chart);
}
图表构建器的配置方式。它会自动为每列创建不同的系列,并将 A 列设置为标签。这并不理想,因为每个系列都有不同的数据类型(例如,系列
A1:A2
第一个值使用 A
,第二个值使用 227
),导致图表生成器忽略字母。我建议将 chartBuilder
更改为:
var chartBuilder = sheet.newChart()
.setChartType(Charts.ChartType.COLUMN)
.addRange(chartRange)
.setPosition(5, 5, 0, 0)
.setTransposeRowsAndColumns(true) //switches the range's rows and columns
.setOption('title', 'Test Chart from A1:M2')
如果需要显示每个柱的值,还可以添加以下内容:
.setOption('series', {
0: { dataLabel: 'value' }
})
但是,我建议限制每个值的小数位数,以便将其正确显示为图表中的标签。结果看起来像这样: