在Google表格中,我该如何编写脚本以将每个图形移动到表格上的特定位置?

时间:2020-05-02 01:28:57

标签: google-apps-script google-sheets google-sheets-macros

我有一个Google图纸,上面有四个图纸,即形状。什么脚本可以将每个形状移动到图纸上的指定位置?

这里是一个示例的链接,在该示例中,我想单击蓝色矩形,并使脚本将绿色矩形移至单元格A1,将紫色三角形移至单元格D7,将橙色圆圈移至单元格I3。 / p>

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

我找不到选择特定图纸的方法。

1 个答案:

答案 0 :(得分:3)

我相信您的目标如下。

  • 单击蓝色矩形后,要按以下方式移动图形。
    • 将绿色矩形移至单元格“ A1”。
    • 将紫色三角形移到单元格“ D7”。
    • 将橙色圆圈移动到单元格“ I3”。

为此,这个答案如何?

问题和解决方法:

不幸的是,在当前阶段,不能通过对象颜色和标识符来区分每个图形。因此,为了实现您的目标,作为一种解决方法,我建议将每个图形放置到预定的单元格中,并使用每个图形的锚点单元作为标识符。

用法:

1。设置函数名称。

  1. 复制并粘贴以下示例脚本。
  2. 首先,请将myFunction的函数名称设置为“蓝色矩形”。
  3. 作为每个图形的样本预定单元格,请将“绿色矩形”,“紫色三角形”和“橙色圆圈”的左上角放在“ A10”,“ A13”和“ A18”。您可以在下图看到它。

    enter image description here

  4. 通过单击“蓝色矩形”运行以下示例脚本。

2。示例脚本。

function myFunction() {
  // 1. Prepare an object for searching Drawings.
  const obj = {
    "10": {name: "green rectangle", moveTo: [1, 1]}, // <--- A1
    "13": {name: "purple triangle", moveTo: [7, 4]}, // <---  D7
    "18": {name: "orange circle", moveTo: [3, 9]}, // <---  I3
  };

  // 2. Retrieve sheet.
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");

  // 3. Move drawings.
  sheet.getDrawings().forEach(d => {
    const arow = d.getContainerInfo().getAnchorRow();
    if (arow in obj) {
      d.setPosition(...obj[arow].moveTo, 0, 0);
    }
  })
}
  • 在这种情况下,蓝色矩形的功能名称为myFunction。然后使用锚点单元作为标识符来检索每个图形。
  • 要运行此脚本,请单击设置了myFunction的蓝色矩形。这样,每个图形都会移动。

结果:

为上面的输入图像运行脚本时,可以获得以下输出。

注意:

  • 这是一个示例脚本。因此,请根据您的实际情况对此进行修改。

enter image description here

参考: