【问题标题】:Google Sheets onEdit function jumping to A1 cellGoogle Sheets onEdit 函数跳转到 A1 单元格
【发布时间】:2020-03-15 01:03:16
【问题描述】:

我刚开始使用 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);
    }
  }
};

【问题讨论】:

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


    【解决方案1】:

    先尝试获取活动电子表格,只调用一次。

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

    它不会改变当前单元格的光标。

    【讨论】:

      【解决方案2】:

      我不确定发生了什么,但如果你试试这个:

      由于您使用的是事件对象,因此无需使用getActiveSheet()。尝试使用e.range.getSheet()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-25
        • 1970-01-01
        • 2017-07-02
        • 2019-11-14
        相关资源
        最近更新 更多