如何使用应用程序脚本更新现有图形的数据范围? [Google 张]

How to update the data range of an existing graph using app script? [Google Sheets]

我创建了下面的脚本,当单元格 J1 被编辑时,它从 onedit 函数运行。该图表存在于标题为 'Daily Data' 的 sheet 中。它将使用的数据来自标题为 'Long Term Data'.

的 sheet

我使用以下 link 作为指导:https://developers.google.com/apps-script/reference/spreadsheet/embedded-chart

感谢您的帮助。

function onEdit(e) {

  //This IF statement ensures it will only run when cell J1 is edited:
  if (
    e.source.getSheetName() == "Daily Data" &&
    e.range.columnStart == 10 &&
    e.range.columnEnd == 10 &&
    e.range.rowStart >= 1 &&
    e.range.rowEnd <= 1 
  ) { 

    var spreadsheet = SpreadsheetApp.getActive();
    var daily_data = spreadsheet.getSheetByName("Daily Data");
    var LTD_data = spreadsheet.getSheetByName("Long Term Data");

       //ABOVE HAS BEEN TESTED AND RUNS SUCCESFULLY. THE BELOW DOES NOT...

    var chart = daily_data.getCharts()[0];
    var range = LTD_data.getRange("B2:J3")
    chart = chart.modify()
        .addRange(range)
        .build();
    spreadsheet.updateChart(chart);
  }
}
;
  • 您想使用 Google Apps 脚本更新 sheet of Daily Data 中的图表。

如果我的理解是正确的,下面的修改怎么样?

修改点:

  • updateChart()是ClassSheet的方法。但是在您的脚本中,updateChart() 用于 Class Spreadsheet。这样,脚本就不起作用了。

当以上几点反映到你的脚本中,就变成了下面这样。

模式一:

在此模式中,范围被添加到现有范围中。

修改后的脚本:

从:
spreadsheet.updateChart(chart);
到:
daily_data.updateChart(chart);

模式二:

在此模式中,删除了现有范围并添加了新范围。

修改后的脚本:

从:
var chart = daily_data.getCharts()[0];
var range = LTD_data.getRange("B2:J3")
chart = chart.modify()
    .addRange(range)
    .build();
spreadsheet.updateChart(chart);
到:
var chart = daily_data.getCharts()[0];
var range = LTD_data.getRange("B2:J3")
var ranges = chart.getRanges();
chart = chart.modify();
ranges.forEach(function(range) {chart.removeRange(range)});
var modifiedChart = chart.addRange(range).build();
daily_data.updateChart(modifiedChart);

注:

  • 以上情况,可以使用简单的OnEdit事件触发器

参考文献:

如果我误解了您的问题而这不是您想要的结果,我深表歉意。