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

如何让Google Sheets addRange函数反向读取单元格范围?

实现Google Apps Script折线图反向读取单元格范围

要让折线图反向读取B13到B1这类范围的数据,你可以通过两种方式实现:

方法一:直接使用反转后的数组作为数据源

无需修改原工作表内容,读取列数据后反转数组,再通过addRows()传入图表,替代原有的addRange():

function newChart() {
  removeChartsOne("mysheet");
  const ss = SpreadsheetApp.getActiveSpreadsheet(); 
  const sheet = ss.getSheetByName("mysheet");
  
  var headerRow = sheet.getRange(1,1,1,5).getValues();
  // 读取列数据并反转顺序
  const colB = sheet.getRange('B1:B13').getValues().reverse();
  const colC = sheet.getRange('C1:C13').getValues().reverse();
  const colD = sheet.getRange('D1:D13').getValues().reverse();
  const colE = sheet.getRange('E1:E13').getValues().reverse();

  chart = sheet.newChart()
    .setChartType(Charts.ChartType.LINE)  
    // 用反转后的数组作为数据源
    .addRows(colB)
    .addRows(colC)
    .addRows(colD)
    .addRows(colE)
    .setOption('title','Title')  
    .setOption('pointShape','circle')
    .setOption('pointSize','7')
    .setPosition(5, 5, 0, 0)  
    .setOption('series', 
     {0:{labelInLegend:headerRow[0][2]},
      1:{labelInLegend:headerRow[0][3]},
      2:{labelInLegend:headerRow[0][4]}
    })
    .build();

  sheet.insertChart(chart);
}

方法二:通过临时区域中转(支持数据自动同步)

如果需要图表随原单元格数据更新自动同步,可以把反转后的数据写入工作表空白区域,再让图表引用该区域:

function newChart() {
  removeChartsOne("mysheet");
  const ss = SpreadsheetApp.getActiveSpreadsheet(); 
  const sheet = ss.getSheetByName("mysheet");
  
  var headerRow = sheet.getRange(1,1,1,5).getValues();
  // 读取并反转数据,写入临时列(示例用F-I列)
  const colB = sheet.getRange('B1:B13').getValues().reverse();
  const colC = sheet.getRange('C1:C13').getValues().reverse();
  const colD = sheet.getRange('D1:D13').getValues().reverse();
  const colE = sheet.getRange('E1:E13').getValues().reverse();
  
  sheet.getRange('F1:F13').setValues(colB);
  sheet.getRange('G1:G13').setValues(colC);
  sheet.getRange('H1:H13').setValues(colD);
  sheet.getRange('I1:I13').setValues(colE);

  chart = sheet.newChart()
    .setChartType(Charts.ChartType.LINE)  
    // 引用反转后的临时区域
    .addRange(sheet.getRange('F1:F13'))    
    .addRange(sheet.getRange('G1:G13'))    
    .addRange(sheet.getRange('H1:H13'))  
    .addRange(sheet.getRange('I1:I13'))  
    .setOption('title','Title')  
    .setOption('pointShape','circle')
    .setOption('pointSize','7')
    .setPosition(5, 5, 0, 0)  
    .setOption('series', 
     {0:{labelInLegend:headerRow[0][2]},
      1:{labelInLegend:headerRow[0][3]},
      2:{labelInLegend:headerRow[0][4]}
    })
    .build();

  sheet.insertChart(chart);
}

内容的提问来源于stack exchange,提问作者Alonso del Villar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 15:52:48