当前位置: 首页 > 知识库问答 >
问题:

为什么取消隐藏行后getRange()不在onChange事件中工作?

牧熙云
2023-03-14

我想在用户取消隐藏行时运行一些脚本。我可以看到,检测用户何时取消隐藏行的唯一方法是在onChange事件中。我所看到的唯一尝试和确定更改内容的方法是通过changeType属性。但是,当用户取消隐藏行时,changeType等于OTHER。其他可以指各种各样的事情。所以我想尝试确定行是否未隐藏。

我注意到,当我取消隐藏行时,这些行现在被选中(具有焦点)。因此,理论上,我应该能够使用getActiveRange()返回刚刚取消隐藏的行。

问题是,当我在onChange事件中使用getActiveRange时,它什么也不返回。但是,如果我在onChange事件函数代码完成后调用getActiveRange,那么我会得到正确的信息。。。即使我没有更改当前在工作表中选择的内容。

为什么getRange()在onChange事件中不返回任何内容?

以下onChange代码将显示一个对话框,其中包含当用户取消隐藏行时getActiveRange方法返回的行数。代码将添加一个名为计划的菜单项-

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Plan')
      .addItem('Collapse Section', 'collapseSection')
      .addSeparator()
      .addItem('Test','testThis')
      .addToUi();
}

function testThis() {
  var thisSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var thisRange = thisSheet.getActiveRange();
  popMsg(thisRange.getNumRows());
}

function onChange(e){ 
  var activeSheet = e.source.getActiveSheet();
  if (e.changeType == "OTHER") {
    // some other event occurred, possible Unhiding Rows    
    if (activeSheet.getName() == "Portfolio") {
      // only execute this code if the OTHER event occurred while on the Portfolio tab
      var thisSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      var thisRange = thisSheet.getActiveRange();
      popMsg(thisRange.getNumRows());
    }
  }
}

function popMsg (thisMsg) {
  var ui = SpreadsheetApp.getUi();  
  var thisMsg = ui.alert('Information',thisMsg,ui.ButtonSet.OK);
}

共有1个答案

璩华辉
2023-03-14

似乎在检索onChange()事件中的活动范围时存在一个未解决的问题,请检查问题跟踪器是否有任何更新。

 类似资料:
  • 问题内容: 我有一个表格单元格,我一直希望成为一个特定的宽度。但是,它不适用于较大的无间距文本字符串。这是一个测试用例: 如何使文本在框的边缘处被切除,而不是使框展开? 问题答案: 需要设置 和 表元件上的合适的宽度,以及和在桌子上的细胞。 例子 定宽列 表格的宽度必须与固定宽度的单元格相同(或更小)。 使用一个固定宽度的列: 使用多个固定宽度的列: 固定和流体宽度色谱柱 必须设置 表格的宽度,但

  • 我实现了动态的列可见性来隐藏/显示列,例如和来显示/隐藏列5。我也有一个的回调,比方说,它用第5列中的文本制作了一个html按钮。 目前在中,我检查,如果为真,则继续执行

  • 我被这个概念困住了。 这是我在一个站点上看到的解释的一部分: 隐藏实现 我是这样想象的: 库客户机是否知道这个实现有什么区别?

  • 问题内容: 我是Bootstrap的新手,并且一直遇到这个问题。我有一个输入字段,只要输入一个数字,就会调用from函数,但是我希望在输入完整个数字后按“ Enter”键才能调用它。验证功能存在相同的问题-调用时间过早。 问题答案: 根据React Doc的说法,您可以听键盘事件,例如or ,not 。 更新:使用React.Component 这是使用React.Component的代码,它执行

  • 本文向大家介绍jQuery Datepicker onchange事件如何工作?,包括了jQuery Datepicker onchange事件如何工作?的使用技巧和注意事项,需要的朋友参考一下 要使用jQuery Datepicker onchange(),请使用datepicker onSelect 事件。这将显示我们当前添加和更改的日期。 示例 您可以尝试运行以下代码,以了解jQuery D

  • 我有一个代码与许多评论,我如何可以隐藏这些,但没有删除,我需要他们之后。