javascript - Google Sheets onEdit 函数跳转到 A1 单元格

标签 javascript google-apps-script google-sheets triggers

我刚刚开始使用 javascript,并尝试将一些复选框制作为 Google 表格中的单选按钮。 当相应的复选框打开时,它会成功关闭相应的复选框,但在脚本运行后,事件单元格始终重置为“主页”工作表中的 A1 单元格,即使编辑是针对另一张工作表也是如此。

我不明白为什么会发生这种情况。我希望用户所在的原始工作表和单元格在脚本运行后保持激活状态。

function onEdit(e) {
  var ss = e.source;
  var eSheet = ss.getActiveSheet();
  var eRange = e.range;
  if ((eSheet.getSheetName() == "Home") && (e.range.rowStart == 8) && (e.range.columnStart > 2) && (e.range.columnStart < 8) && (e.value == "TRUE")) {

    // Makes sure no other checkboxes are on
    for (var i = 3; i < 8; i++) {
      if (i == e.range.columnStart) continue;
      SpreadsheetApp.getActiveSheet().getRange(e.range.rowStart, i).setValue(false);
    }
  }
};

最佳答案

首先尝试获取事件电子表格,仅调用一次。

function onEdit(e) {
  // console.log(JSON.stringify(e));
  let eSheet = SpreadsheetApp.getActiveSpreadsheet();
  if ((eSheet.getActiveSheet().getSheetName() == "Home") && (e.value == "TRUE") && (e.range.columnStart > 2) && (e.range.columnStart < 8) && (e.range.rowStart == 8)) {
    // Makes sure no other checkboxes are on
    for (var i = 3; i < 8; i++) {
      if (i == e.range.columnStart) continue;
      eSheet.getActiveSheet().getRange(e.range.rowStart, i).setValue(false);
    }
  }
}

它不会更改事件单元格中的光标。

关于javascript - Google Sheets onEdit 函数跳转到 A1 单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60688806/

相关文章:

javascript - angularui bootstrap datepicker 弹出窗口未在日期选择时关闭

javascript - Angular:委托(delegate)模式。在 ngFor 内部优化处理程序的方法

javascript - Google Script 中的 onEdit(e) - 尝试将最后编辑日期放入单元格并在某些工作表(选项卡)上排除此功能

C# Google Sheets APIv4 填充请求体

google-sheets - 如果行中的其他单元格与值匹配,则将单元格从工作表复制到另一个单元格

javascript - JavaScript 代码赋值中的左侧无效

javascript - 递归完成后的操作

javascript - 以编程方式获取 Gmail 存储使用情况

google-apps-script - 在谷歌脚本中动态生成范围

javascript - Google App 脚本 - 日期作为字符串操作