【问题标题】:Service error: Spreadsheets(line... with .setColumnFilterCriteria服务错误:Spreadsheets(line... with .setColumnFilterCriteria
【发布时间】:2018-07-27 04:25:59
【问题描述】:

这个问题是另一个问题的延伸。 Apply basic filter to multiple values in a spreadsheet column

我遇到了一个错误,特别是Service error: Spreadsheets (line 8, file "Filter"),代码如下:

function testFilter() {
  var ss = SpreadsheetApp.getActive();
  var monthlyDetailSht = ss.getSheetByName("Monthly_Detail");
  var filterRange = monthlyDetailSht.getRange(2,12,359,1).getValues(); //Get L column values    
  var hidden = getHiddenValueArray2(filterRange,["Apple"]); //get values except Apple    
  var filterCriteria = SpreadsheetApp.newFilterCriteria().setHiddenValues(hidden).build();
  var rang = monthlyDetailSht.getDataRange();
  var filter = rang.getFilter() || rang.createFilter();// getFilter already available or create  a new one

  //remove filter and flush
  if(monthlyDetailSht.getFilter() != null){monthlyDetailSht.getFilter().remove();}
  SpreadsheetApp.flush();

  filter.setColumnFilterCriteria(12, filterCriteria);
};



    //flattens and strips column L values of all the values in the visible value array
    function getHiddenValueArray2(colValueArr,visibleValueArr){
      var flatArr = colValueArr.map(function(e){return e[0];}); //Flatten column L
      visibleValueArr.forEach(function(e){ //For each value in visible array    
        var i = flatArr.indexOf(e.toString()); 
        while (i != -1){ //if flatArray has the visible value        
          flatArr.splice(i,1); //splice(delete) it
          i = flatArr.indexOf(e.toString());
        }
      });
      return flatArr;
    }

我使用Logger.log(hidden) 来捕获函数返回的值,它是所有其他“水果”的列表,重复次数与 L 列中可用的次数一样多。我使用水果作为替代品用于敏感数据。

所以我的问题来了。为什么我现在在几天内都可以正常工作时出现该错误?我该如何纠正这个问题?

尝试的修复:

  • 我尝试在数据末尾添加行。未修复。
  • 我尝试移除过滤器、冲洗、设置过滤器。没修。 (更新了上面的代码,以防其他人感兴趣。)

【问题讨论】:

  • 您是否在 ss 工作和出现错误之间添加或删除了任何内容?如果是这样,添加的内容有什么具体/不同的地方吗?
  • 取下过滤器,冲洗,然后设置过滤器有帮助吗?在其他 API 中,如果已存在基本过滤器,则尝试设置基本过滤器是错误的,因此 Apps 脚本方法可能会出现类似问题。另外,隐藏值数组中是否存在重复值?
  • @I'-'我不,代码在运行后没有更改。此代码是在此文件上创建的,但随后应用于另一个文件。另一个文件开始给我错误,所以我回过头来看看原来的文件是否也给了我错误。
  • @tehhowch,我该如何冲洗?
  • @tehhowch,我知道如何按照您的建议进行操作。没有运气。

标签: google-apps-script


【解决方案1】:

它现在正在工作。对于那些在谷歌搜索中偶然发现这一点的人,我想注意几件事。首先,这个问题实际上是谷歌方面的一个错误。使用我上面的相同代码现在可以工作了。我没改。

其次,我能够通过宏记录器记录过滤,并且当我的原始代码没有时,该代码可以工作。这可能会帮助那些处于时间紧缺并且迫不及待地等待谷歌整理他们的东西的人。我仍然不确定我的原始代码中具体是什么导致了错误,但我的猜测是这无关紧要。我花了一整天的时间来研究这个错误,它似乎是零星的,没有一个罪魁祸首。如果将来发生,我的问题可能与您的不同。

希望有帮助!

【讨论】:

    猜你喜欢
    • 2017-07-02
    • 1970-01-01
    • 2016-12-17
    • 1970-01-01
    • 2015-10-10
    • 2016-10-12
    • 1970-01-01
    • 2020-09-22
    • 1970-01-01
    相关资源
    最近更新 更多