Google Sheet 脚本:具有过滤掉的行的范围不支持此操作

Google Sheet Script : This operation is not supported on a range with a filtered-out row

这是我的问题:

我下面的代码因为以下行而不起作用:current.uncheck();

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

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

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的值改变时,你可以在日志中看到它。