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

Google Sheets图表动态Y轴调整:获取当前可见数据系列

修正Google Apps Script实现仅基于可见图表系列动态调整Y轴范围

问题描述

现有代码会计算图表所有关联系列的极值来调整Y轴,但需求是仅针对当前可见的数据系列(如NEW_rpm、OLD_rpm)计算对应列的MIN/MAX,再将MIN减100、MAX加100来动态设置Y轴范围。

修正后的代码

function adjustChartYAxisBasedOnVisibleSeries() {
  // 定位目标工作表
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Frontend');
  if (!sheet) {
    console.error('未找到名为"Frontend"的工作表');
    return;
  }

  // 获取目标图表(此处假设为工作表中的第一个图表,可根据实际情况调整定位逻辑)
  const charts = sheet.getCharts();
  if (charts.length === 0) {
    console.error("工作表中无图表");
    return;
  }
  let chart = charts[0];
  // 若需按标题定位图表,可替换为以下代码:
  // chart = charts.find(c => c.getOptions().get('title') === '你的图表标题');

  // 收集所有可见系列的数据源范围
  const visibleSeriesRanges = [];
  const numSeries = chart.getNumSeries();
  for (let i = 0; i < numSeries; i++) {
    const series = chart.getSeriesAt(i);
    // 判断系列是否可见
    if (series.isVisible()) {
      const dataRange = series.getRange();
      visibleSeriesRanges.push(dataRange);
    }
  }

  if (visibleSeriesRanges.length === 0) {
    console.error("无可见的数据系列");
    return;
  }

  // 提取所有可见系列对应列的数值数据
  let allValues = [];
  visibleSeriesRanges.forEach(range => {
    const values = range.getValues().flat().filter(val => typeof val === 'number');
    allValues = allValues.concat(values);
  });

  // 计算整体MIN和MAX
  const minVal = Math.min(...allValues);
  const maxVal = Math.max(...allValues);

  // 调整Y轴范围并更新图表
  chart = chart.modify()
    .setOption('vAxis.minValue', minVal - 100)
    .setOption('vAxis.maxValue', maxVal + 100)
    .build();
  sheet.updateChart(chart);

  console.log(`Y轴范围已调整为:${minVal-100} 至 ${maxVal+100}`);
}

关键修正点说明

  • 仅筛选可见系列:通过chart.getSeriesAt(i).isVisible()判断每个系列的可见状态,只收集可见系列的数据源范围,避免计算隐藏系列的数据。
  • 精准提取数值数据:对每个可见系列的数据源范围,提取其中的数值类型数据(过滤非数值内容),确保极值计算准确。
  • 动态调整Y轴:基于可见系列的整体MIN/MAX,按要求偏移100后设置Y轴的minValue和maxValue,最后通过sheet.updateChart()更新图表。

使用说明

  1. 将代码复制到你的Google表格脚本编辑器中
  2. 根据实际图表的定位需求调整图表获取逻辑(比如按标题定位)
  3. 运行函数即可完成Y轴范围的动态调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 00:27:06