如何使用 Google Apps 脚本删除电子表格中特定范围内的图表集?
How to delete a chart set in a specific range in a spreadsheet, using Google Apps Script?
我在第 9 列的活动单元格行中获得了构建图表的代码。
现在,在脚本删除该图表的源 sheet 之前,我想在该特定范围(行,列)内设置图表并将其删除。
var charts1 = newSheet.getCharts();
chart = charts1[charts1.length - 1];
chart = newSheet.newChart()
.asLineChart()
.addRange(newSheet.getRange(ticker + '!M71:P175'))
.setMergeStrategy(Charts.ChartMergeStrategy.MERGE_COLUMNS)
.setTransposeRowsAndColumns(false)
.setNumHeaders(1)
.setHiddenDimensionStrategy(Charts.ChartHiddenDimensionStrategy.IGNORE_BOTH)
.setOption('bubble.stroke', '#000000')
.setOption('useFirstColumnAsDomain', false)
// ...other .setOption()'s...
.setOption('width', 305)
.setPosition(activeCell, 9, 1, 1) //This is where the chart is set to be built
.build();
listOfStocks.insertChart(chart);
我已经尝试获取该范围,但 getCharts()
然后将其删除,但没有任何此类选项可供选择。
如何做到这一点?
我相信你的目标如下。
- 您想使用 Google Apps 脚本使用图表上单元格的坐标删除图表。
要删除图表,可以使用ClassSheet中removeChart
的方法。并且,可以通过getContainerInfo
的方法检索图表的坐标。使用这些方法编写示例脚本时,变成如下。
示例脚本:
在使用此脚本之前,请设置 searchRow
、searchColumn
和 sheetName
的变量。
function myFunction() {
const searchRow = 1;
const searchColumn = 9;
const sheetName = "Sheet1";
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
sheet.getCharts().forEach(c => {
const container = c.getContainerInfo();
if (container.getAnchorRow() == searchRow && container.getAnchorColumn() == searchColumn) {
sheet.removeChart(c);
}
});
}
- 在此示例脚本中,删除了放入单元格“I1”的图表。在这种情况下,该坐标与图表的左上角相同。
注:
如果要删除“I”列中的所有图表,也可以使用以下脚本。
const searchColumn = 9;
const sheetName = "Sheet1";
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
sheet.getCharts().forEach(c => {
const container = c.getContainerInfo();
if (container.getAnchorColumn() == searchColumn) {
sheet.removeChart(c);
}
});
参考文献:
我在第 9 列的活动单元格行中获得了构建图表的代码。 现在,在脚本删除该图表的源 sheet 之前,我想在该特定范围(行,列)内设置图表并将其删除。
var charts1 = newSheet.getCharts();
chart = charts1[charts1.length - 1];
chart = newSheet.newChart()
.asLineChart()
.addRange(newSheet.getRange(ticker + '!M71:P175'))
.setMergeStrategy(Charts.ChartMergeStrategy.MERGE_COLUMNS)
.setTransposeRowsAndColumns(false)
.setNumHeaders(1)
.setHiddenDimensionStrategy(Charts.ChartHiddenDimensionStrategy.IGNORE_BOTH)
.setOption('bubble.stroke', '#000000')
.setOption('useFirstColumnAsDomain', false)
// ...other .setOption()'s...
.setOption('width', 305)
.setPosition(activeCell, 9, 1, 1) //This is where the chart is set to be built
.build();
listOfStocks.insertChart(chart);
我已经尝试获取该范围,但 getCharts()
然后将其删除,但没有任何此类选项可供选择。
如何做到这一点?
我相信你的目标如下。
- 您想使用 Google Apps 脚本使用图表上单元格的坐标删除图表。
要删除图表,可以使用ClassSheet中removeChart
的方法。并且,可以通过getContainerInfo
的方法检索图表的坐标。使用这些方法编写示例脚本时,变成如下。
示例脚本:
在使用此脚本之前,请设置 searchRow
、searchColumn
和 sheetName
的变量。
function myFunction() {
const searchRow = 1;
const searchColumn = 9;
const sheetName = "Sheet1";
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
sheet.getCharts().forEach(c => {
const container = c.getContainerInfo();
if (container.getAnchorRow() == searchRow && container.getAnchorColumn() == searchColumn) {
sheet.removeChart(c);
}
});
}
- 在此示例脚本中,删除了放入单元格“I1”的图表。在这种情况下,该坐标与图表的左上角相同。
注:
如果要删除“I”列中的所有图表,也可以使用以下脚本。
const searchColumn = 9; const sheetName = "Sheet1"; const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName); sheet.getCharts().forEach(c => { const container = c.getContainerInfo(); if (container.getAnchorColumn() == searchColumn) { sheet.removeChart(c); } });