我有一个HTML用户表单选择和输入字段,我需要在Google表格的字符串中搜索其输入。
这是单元格的样子。
我有以下函数,可以很好地搜索单元格并返回过滤时不希望与.setHiddenValues()
一起使用的数组中的值。
function getHiddenValueArray(colValueArr,visibleValueArr){
//colValueArr = SpreadsheetApp.getActive().getSheetByName('Monthly_Detail').getRange(2,64,359,1).getValues();
//visibleValueArr = ['last1']; //In this case user will only input 1 name
//strictLevel = 'lenient'
//will find a match within a cell
var flatUniqArr = colValueArr.map(function(e){return e[0].toString();})
.filter(function(e,i,a){
return (a.indexOf(e) == i && !(visibleValueArr.some(function(f){
return e.search(new RegExp(f,'i'))+1;
})));
});
Logger.log(colValueArr);
Logger.log(flatUniqArr);
return flatUniqArr;
}
我相信此功能不起作用的原因是因为单元格数据中有3个换行符和一个尾随的换行符。
这是我的问题:
如果可以的话,我可以在其中加入三分之一,并为会员类型添加一个额外的变量。
说明:
评论注释:
.setHiddenValues
包含换行符,否则Google表格无法过滤包含换行符的单元格。flatUniqArr
从flatUniqArr[i]= flatUniqArr[i].replace(/(\r\n|\n|\r)/gm,"");
删除了换行符。日志显示此消除了换行符。但是,仍然没有去。这将其范围缩小到Google表格无法过滤包含换行符的单元格。答案 0 :(得分:0)
问题:
事实证明,尽管.setHiddenValues()
将接受带有在其中包含换行符的字符串的数组,但是Google表格不会允许将这些字符串应用于列过滤。
解决方案:
从具有换行符的单元格中删除换行符。就我而言,它位于一列中,因此我使用了for循环来trim()
的每个值。我使用trim的原因是问题只在于换行符。如果对其他人有帮助,则代码如下:
var teamArr = new Array()
var teamArr = sht.getRange(teamCS + '2:' + teamCS + lastRow).getValues().map(function (row) { return row.map(function (val) { return val.toString().trim(); }); });
sht.getRange(teamCS + '2:' + teamCS + lastRow).setValues(teamArr);
已更新为每条评论tehhowch的更快实施。