4

我创建了下面的脚本,该脚本在编辑单元格 J1 时从 onedit 函数运行。该图表存在于标题为“每日数据”的工作表中。它将使用的数据来自标题为“长期数据”的表格。

我使用以下链接作为指导: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);
  }
}
;
4

1 回答 1

8
  • 您想更新Daily Data使用 Google Apps 脚本表中的图表。

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

修改点:

  • updateChart()是Class Sheet的方法。但在您的脚本中,updateChart()用于类电子表格。这样,脚本不起作用。

当上述点反映到您的脚本时,它变成如下。

模式一:

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

修改后的脚本:

从:
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 事件触发器的简单触发器。

参考:

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

于 2020-02-14T12:31:11.307 回答