Apps 脚本删除图像

问题描述 投票:0回答:2

我有这个脚本:

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
};

目前创建图表并将其作为图像显示在我的工作表上效果很好。我这样做是因为我无法在锁定行上方创建图表。每次运行脚本时,它都会在旧图像之上创建一个新图像(如果之前运行过该脚本)。我想编辑脚本,以便它首先查看是否已存在另一个图像,将其删除,然后用新的图表图像替换它。我一直在到处寻找一种方法来先删除旧图像,但无法弄清楚。任何帮助都会很棒!谢谢

image google-apps-script google-sheets
2个回答
2
投票

在您的情况下,为了删除带有锚单元“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());
    

参考资料:


0
投票
    // 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;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.