Google Sheet Script : 带有过滤掉的行的范围不支持此操作 修改后的脚本:注意:

问题描述

这是我的问题:

由于以下行,我下面的代码不起作用:current.uncheck();

并且日志说:“在具有过滤掉的行的范围上不支持此操作。”

但是这张表不应该包含过滤器,我也尝试删除潜在的过滤器,但没有成功。

if(current.isChecked()) // If the check Box is checked
{
  // I put some data in a array :
  var arraySupport = rangeColumnToArray(ss.getSheetByName("import_support").getRange("A1:A15"))

  var dataSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("copy of Data Bank");

  // I change criteria filter on other sheet :
  var criteriaSupport = SpreadsheetApp.newFilterCriteria()
      .setHiddenValues(arraySupport)
      .build();  
  dataSheet.getFilter().setColumnFilterCriteria(24,criteriaSupport);
  
  ss.getRange("G5:G").clearContent();  // clear eventual content
  copyExo();  // This fonction copy one column from the filtered sheet (dataSheet) on activeSheet
  activeSheet.getFilter().remove();  // I try that without success
  current.uncheck(); // And I try to uncheck the checkBox
}

感谢您为我提供的所有帮助。

解决方法

虽然我不确定 current 和 if 语句中使用的范围之间的关系,但为了使 current.uncheck() 起作用,我想提出以下修改。>

修改后的脚本:

if(current.isChecked()) // If the check box is checked
{
  current.uncheck();  // <--- "current.uncheck();" at the last line in this function is moved to here.
  // I put some data in a array :
  var arraySupport = rangeColumnToArray(ss.getSheetByName("import_support").getRange("A1:A15"))

注意:

  • 虽然我不确定 copyExo() 的详细脚本,但我认为在您的脚本中,如果 current 在您的 if 语句中的脚本中没有更改,则 current.uncheck() 在最后一行有效。比如你想确认的时候,在脚本的每一行放if (current) console.log(current.getA1Notation())怎么样?这样,当 current 的值发生变化时,您可以在日志中看到它。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...