求助:使用Google Apps Script创建指定折线图失败,求技术支持
修正后的Google Apps Script折线图代码
以下是针对你的需求调整后的代码,解决了原代码中的数据冲突、X轴刻度错误等问题:
function createCustomLineChart() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getActiveSheet(); // 获取两条曲线的数据源范围 var dataRange1 = sheet.getRange("E10:AX10"); var dataRange2 = sheet.getRange("E11:AX11"); // 生成数据点对应的X值(0, -2, -4, ..., -90) var xValues = []; for (var i = 0; i <= 45; i++) { xValues.push(-2 * i); } // 提取Y轴数据 var yData1 = dataRange1.getValues()[0]; var yData2 = dataRange2.getValues()[0]; // 构建自定义数据表格 var dataTable = Charts.newDataTable() .addColumn(Charts.ColumnType.NUMBER, 'X') .addColumn(Charts.ColumnType.NUMBER, '曲线1') .addColumn(Charts.ColumnType.NUMBER, '曲线2'); // 逐行填充数据 for (var i = 0; i < xValues.length; i++) { dataTable.addRow([xValues[i], yData1[i], yData2[i]]); } // 创建并配置折线图 var chart = sheet.newChart() .setChartType(Charts.ChartType.LINE) .setDataTable(dataTable.build()) // 使用自定义数据表格,替代原addRange方法 .setPosition(30, 5, 0, 0) .setOption('title', '自定义折线图') .setOption('hAxis', { title: 'X轴', viewWindow: { min: -90, max: 0 }, ticks: [0, -10, -20, -30, -40, -50, -60, -70, -80, -90], // 间隔-10的刻度 gridlines: { count: 10 } }) .setOption('vAxis', { title: 'Y轴', viewWindow: { min: 0, max: 800 }, ticks: [0, 100, 200, 300, 400, 500, 600, 700, 800], // 间隔100的刻度 gridlines: { count: 9 } }) .setOption('legend', { position: 'top' }); // 将图表插入工作表 sheet.insertChart(chart.build()); }
关键修正点说明
- 数据来源冲突解决:移除原代码中的
addRange方法,改用setDataTable绑定自定义构建的数据表格,避免单元格数据与手动构建数据的冲突。 - X轴刻度修正:将
hAxis.ticks设置为你需要的间隔-10的刻度数组,替换原代码中所有数据点X值的密集刻度。 - 网格线匹配:调整X轴网格线数量为10(对应10个刻度),Y轴保持9个网格线(对应0-800的9个间隔)。
- 变量命名优化:将
xLabel改为xValues,明确区分数据点的X值与轴刻度。
内容的提问来源于stack exchange,提问作者WCJ
相关产品推荐
相关产品推荐

