如何使用应用程序脚本更新现有图表的数据范围?[谷歌表格]

Nag*_*m92 4 triggers google-sheets google-apps-script google-sheets-charts

我创建了下面的脚本,该脚本在编辑单元格 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);
  }
}
;
Run Code Online (Sandbox Code Playgroud)

Tan*_*ike 8

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

如果我的理解是正确的,下面的修改如何?

修改点:

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

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

模式一:

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

修改后的脚本:

从:
spreadsheet.updateChart(chart);
Run Code Online (Sandbox Code Playgroud) 到:
daily_data.updateChart(chart);
Run Code Online (Sandbox Code Playgroud)

模式2:

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

修改后的脚本:

从:
var chart = daily_data.getCharts()[0];
var range = LTD_data.getRange("B2:J3")
chart = chart.modify()
    .addRange(range)
    .build();
spreadsheet.updateChart(chart);
Run Code Online (Sandbox Code Playgroud) 到:
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);
Run Code Online (Sandbox Code Playgroud)

笔记:

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

参考:

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