如何使用应用程序脚本更新现有图形的数据范围? [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事件触发器
参考文献:
如果我误解了您的问题而这不是您想要的结果,我深表歉意。
我创建了下面的脚本,当单元格 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事件触发器
参考文献:
如果我误解了您的问题而这不是您想要的结果,我深表歉意。