在 Google 表格中,如何编写脚本将绘图移动到 sheet 上的特定位置?

In Google Sheets how can I write a script to move a drawing to a specific location on the sheet?

我有一个 Google sheet 有绘图,即形状。什么脚本会将形状移动到 sheet 上的指定位置?

这是一个 link 示例,我想单击蓝色矩形并让脚本移动绿色矩形以覆盖单元格 A1。

https://drive.google.com/open?id=1eFCwDiY90ZM5SIMa6C0rSdhG_oC-SWgsk8vAvjIR34s

这是我在 Google 中的第一个脚本,我找不到 select 绘图的方法。

我相信你的目标如下。

  • 您想要在单击蓝色矩形时将绘图(绿色矩形)移动到单元格 "A1"。

为此,这个答案怎么样?

用法:

1。设置函数名称。

首先请将myFunction的函数名设置为"the blue rectangle"。这样,当点击蓝色矩形时,myFunction就是运行。

2。示例脚本。

function myFunction() {
  // 1. Retrieve sheet.
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");

  // 2. Retrieve "the green rectangle".
  const drawing = sheet.getDrawings().filter(e => e.getOnAction() != "myFunction")[0];

  // 3. Move "the green rectangle".
  drawing.setPosition(1, 1, 0, 0);
}
  • 在本例中,蓝色矩形的函数名称为 myFunction。所以使用它,检索到绿色矩形。
  • 为了运行这个脚本,请点击myFunction设置的蓝色矩形。这样,绿色矩形被移动到单元格 "A1".

注:

  • 这是一个示例脚本。所以请根据您的实际情况进行修改。

参考:

这就是我在 sheet 中所做的,并且很有效;可能有更好的方法,但至少这很容易实现:

function placeDrawing(row, col, offsetY, offsetX){
  var ss = SpreadsheetApp.getActive().getSheetByName("sheetName");
  var drawings = ss.getDrawings(); //This returns an array of all drawings in the sheet 
  drawings[0].setPosition(row, col, offsetY,  offsetX);//for each drawing set the wanted position
}

当然,你需要一些测试来猜测确切的索引(我的是 8 张图纸中的 0 和 1),或者你可以做一个 for 来迭代它们。