You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Google Apps Script的EmbeddedChartBuilder设置X/Y轴并指定数据列

指定X轴与数据系列的Google Apps Script折线图实现

针对你提供的折线图创建函数,要实现自定义指定X轴列和数据系列列,有两种实用方案,以下是具体实现:

方案一:分范围添加X轴与数据系列

适合X轴和系列数据不连续的场景,精确控制每个参与图表的范围:

function newCustomChart(xAxisRange, seriesRanges, sheet) {
  // 初始化图表基础配置
  var chart = sheet.newChart()
    .setChartType(Charts.ChartType.LINE)
    .setPosition(5, 5, 0, 0)
    .setOption("title", "Model run 1")
    .setOption("pointSize", 2)
    .setOption("lineWidth", 1);

  // 添加X轴数据范围
  chart.addRange(xAxisRange);
  // 批量添加所有数据系列的范围
  seriesRanges.forEach(range => chart.addRange(range));

  // 关键配置:仅使用显式添加的范围,关闭自动识别维度
  chart.setHiddenDimensionStrategy(Charts.HiddenDimensionStrategy.ONLY_SPECIFIED)
    // 可选:配置X轴标题
    .setOption("hAxis", { title: "自定义X轴标题" })
    // 可选:自定义每个系列的图例标签
    .setOption("series", {
      0: { labelInLegend: "数据系列1" },
      1: { labelInLegend: "数据系列2" }
    });

  // 构建并插入图表
  sheet.insertChart(chart.build());
}

调用示例

假设你的数据在Sheet1中,A列为X轴数据,B、C列为数据系列:

var activeSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
// X轴范围(跳过表头,从A2开始)
var xAxisRange = activeSheet.getRange("A2:A100");
// 数据系列范围数组
var seriesRanges = [
  activeSheet.getRange("B2:B100"),
  activeSheet.getRange("C2:C100")
];
// 调用函数创建图表
newCustomChart(xAxisRange, seriesRanges, activeSheet);

方案二:从整体数据范围指定列索引

适合数据在连续区域的场景,直接指定列索引来定义X轴和系列:

function newChartWithColumnIndices(dataRange, xAxisColIndex, seriesColIndices, sheet) {
  var chart = sheet.newChart()
    .setChartType(Charts.ChartType.LINE)
    .addRange(dataRange)
    .setPosition(5, 5, 0, 0)
    .setOption("title", "Model run 1")
    .setOption("pointSize", 2)
    .setOption("lineWidth", 1);

  // 关键配置:关闭默认第一列为X轴的行为
  chart.setOption("useFirstColumnAsDomain", false)
    // 指定X轴对应的列索引(从0开始计数)
    .setOption("domainAxis", { index: xAxisColIndex });

  // 配置数据系列对应的列索引
  var seriesConfig = {};
  seriesColIndices.forEach((colIndex, seriesIndex) => {
    seriesConfig[seriesIndex] = {
      sourceColumn: colIndex,
      targetAxisIndex: 0 // 0表示左侧Y轴,1为右侧Y轴(双Y轴场景)
    };
  });
  chart.setOption("series", seriesConfig);

  sheet.insertChart(chart.build());
}

调用示例

假设你的数据在Sheet1的A1:C100区域(包含表头),指定A列(索引0)为X轴,B、C列(索引1、2)为数据系列:

var activeSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var fullDataRange = activeSheet.getRange("A1:C100");
// X轴列索引0,系列列索引[1,2]
newChartWithColumnIndices(fullDataRange, 0, [1, 2], activeSheet);

核心配置说明

  • setHiddenDimensionStrategy(Charts.HiddenDimensionStrategy.ONLY_SPECIFIED):仅使用手动添加的范围,避免图表自动识别多余数据。
  • useFirstColumnAsDomain: false:禁用默认将第一列设为X轴的规则,允许自定义指定X轴列。
  • domainAxis.index:直接指定X轴对应的列索引(从0开始)。
  • series配置:可自定义每个系列的数据源列、Y轴归属、图例标签等属性。

内容的提问来源于stack exchange,提问作者tovernaar123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 11:45:43