我在活动单元格的第 9 列中得到了一个构建图表的代码。 现在,在脚本删除该图表的源工作表之前,我想将图表设置在该特定范围(行、列)内并将其删除。
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()
然后将其删除,但没有任何此类选项可供选择。
如何做到这一点?
答案 0 :(得分:2)
我相信你的目标如下。
要去除图表,可以使用Class Sheet中的WebClient getWebClient() {
ObjectMapper objectMapper = new ObjectMapper();
SimpleModule simpleModule = new SimpleModule();
simpleModule.addDeserializer(MyResponse.class, new MyResponseDeserializer());
objectMapper.registerModule(simpleModule);
ExchangeStrategies strategies = ExchangeStrategies
.builder()
.codecs(clientDefaultCodecsConfigurer -> {
clientDefaultCodecsConfigurer.defaultCodecs().jackson2JsonEncoder(new Jackson2JsonEncoder(objectMapper, MediaType.APPLICATION_JSON));
clientDefaultCodecsConfigurer.defaultCodecs().jackson2JsonDecoder(new Jackson2JsonDecoder(objectMapper, MediaType.APPLICATION_JSON));
}).build();
return WebClient.builder().exchangeStrategies(strategies).build();
}
Mono<List<Item>> getItems(String token) {
return getWebClient()
.get()
.headers(httpHeaders -> httpHeaders.setBearerAuth(token))
.retrieve()
.bodyToMono(MyResponse.class)
.map(MyResponse::data)
.retryBackoff(RetrySettings.RETRIES, RetrySettings.FIRST_BACKOFF, RetrySettings.MAX_BACKOFF)
.doOnError(e -> log.error("error: " + e.getCause().toString()))
}
方法。并且,可以通过removeChart
的方法检索图表的坐标。使用这些方法准备好示例脚本后,变成如下所示。
使用本脚本前,请设置getContainerInfo
、searchRow
和searchColumn
变量。
sheetName
如果要删除“I”列中的所有图表,也可以使用以下脚本。
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);
}
});
}