首页 > 解决方案 > 使用 Over-grid Button 在脚本中引用按钮的锚单元格

问题描述

我正在寻找在该按钮调用的函数中使用按钮的锚单元格。我的按钮插入不同的行。单击一个应该使其仅与其锚单元格行上的数据交互。

这是用于表格/应用程序脚本,我用它来搜索我们 G Suite 域的 Google 群组以查找外部邮寄地址。对内部用户进行 memberOf() 检查很容易,但 G Suite 无法搜索外部用户的组成员资格。

该脚本会在每个结果旁边创建一个“删除”按钮。单击删除按钮应将用户从列出的组中删除 只要提供了正确的单元格,删除脚本就可以工作。当用户与之交互时,我只是看不到如何确保按钮的锚单元格成为选定/活动单元格。

这是添加删除按钮的脚本,让您了解它们是如何插入的:

function createRemoveButtons(numberOfResults) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var searchResultStartingColumn = 3;
  var searchResultStartingRow = 4;
  for (let i = 0; i < numberOfResults.length; i++) {
    const resultRow = numberOfResults[i];
    sheet.getRange(searchResultStartingRow + i, searchResultStartingColumn)
      .activate();
    // Get Remove button image.
    var ImageBlob = DriveApp.getFileById("1wxSNDJhRz5ehxNZBFCoshMW8j2nFTfGx")
      .getBlob().getAs('image/png');
    var image = sheet.insertImage(ImageBlob, searchResultStartingColumn, searchResultStartingRow, 1, 1);
    image.setHeight(29).setWidth(73).assignScript("removeUserFromGroup");
  }
}

标签: google-apps-scriptgoogle-sheets

解决方案


您必须为每个按钮创建一个函数,并使用该函数来设置在单击该按钮时要执行的行。

function buttonRow10(){
  var row = 10;
  // Do the things to do on row 10
}

以上是因为通过单击按钮调用的函数不知道单击了哪个按钮。换句话说,与将事件对象作为参数的简单/可安装触发器相反,分配给按钮的功能没有。


推荐阅读