You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用Google Apps Script过滤Google Sheets两列非空键值对数组?

解决Google Apps Script中空数组过滤问题

嗨,我来帮你搞定这个问题!你遇到的核心问题是filter(String)没法过滤掉["", ""]这种空数组,原因很简单:当你把一个数组(比如["", ""])传给String()的时候,它会转成字符串","——这不是空字符串,所以filter会把它当成有效元素保留下来,自然就过滤不掉啦。

针对你的场景(A列有值时B列必有值,A空则B空),我们可以自定义一个过滤函数,直接检查每行的第一个元素(A列)是否非空:

// 替换原来的 databaseNames.filter(String)
var lastLvalues = databaseNames.filter(row => row[0].trim() !== "");

如果需要更通用的方案(比如行内只要有一个非空单元格就保留),可以用some()方法来判断:

var lastLvalues = databaseNames.filter(row => row.some(cell => cell.trim() !== ""));

把这个修改应用到你的代码里,就能得到预期的28行有效数据了。另外,顺便提一句:获取数据的时候其实可以直接定位到有内容的行范围,避免拿到大量空行,这样后续过滤步骤都能省掉,效率更高:

// 直接获取A2:B的有效数据范围,不用拿整列
var databaseNames = Lsheet.getRange(2, 1, Lsheet.getLastRow()-1, 2).getValues();

内容的提问来源于stack exchange,提问作者swolfe2

火山引擎 最新活动