我有这个脚本:
function testchartbuild() {
var sheet = SpreadsheetApp.getActiveSheet();
var chart = sheet.newChart()
.setChartType(Charts.ChartType.LINE)
.asLineChart()
.setOption("useFirstColumnAsDomain", false)
.addRange(sheet.getRange("BA24:BD231"))
.setNumHeaders(1)
.setPosition(5, 5, 0, 0)
.setOption("legend", {position: "bottom"})
.setOption("width", 690)
.setOption("height", 195)
.build();
// create an image from that EmbeddedChart
sheet.insertImage(chart.getBlob(),58,2); // this works
};
目前创建图表并将其作为图像显示在我的工作表上效果很好。我这样做是因为我无法在锁定行上方创建图表。每次运行脚本时,它都会在旧图像之上创建一个新图像(如果之前运行过该脚本)。我想编辑脚本,以便它首先查看是否已存在另一个图像,将其删除,然后用新的图表图像替换它。我一直在到处寻找一种方法来先删除旧图像,但无法弄清楚。任何帮助都会很棒!谢谢
在您的情况下,为了删除带有锚单元“BF2”的现有图像,以下修改如何?
.build();
// create an image from that EmbeddedChart
sheet.insertImage(chart.getBlob(),58,2); // this works
.build();
sheet.getImages().forEach(e => {
if (e.getAnchorCell().getA1Notation() == "BF2") {
e.remove();
}
});
// create an image from that EmbeddedChart
sheet.insertImage(chart.getBlob(),58,2); // this works
如果要删除所有现有图片,请按如下方式修改上述修改。
sheet.getImages().forEach(e => e.remove());
// If you want to delete a specific image located
// in a known cell, this will do the trick.
const images = sheet.getImages();
for (let i = 0; i < images.length; i++) {
if (row == images[i].getAnchorCell().getRow() &&
col == images[i].getAnchorCell().getColumn()) {
images[i].remove();
break;
}
}