服务错误:电子表格(第..行,包含.setColumnFilterCriteria



这个问题是另一个问题的扩展。将基本筛选器应用于电子表格列中的多个值

我遇到一个错误,特别是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列中的可用次数相同。我使用水果来代替敏感数据。

我的问题来了。为什么我现在会出现这个错误,而它已经运行了几天了?我该如何更正?

尝试修复:

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

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

其次,我能够通过宏记录器记录过滤,当我的原始代码不起作用时,该代码就起作用了。这可能会帮助那些时间紧张、迫不及待地想用谷歌把东西整理好的人。我仍然不确定我的原始代码中具体是什么导致了错误,但我的猜测是这无关紧要。我花了一整天的时间来研究这个错误,它似乎是偶发的,没有一个罪魁祸首。如果将来发生这种情况,我的问题可能与你的问题不同。

希望能有所帮助!

最新更新