我目前使用以下函数来计算列中相同值的出现次数。
function countRecords() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const last = sheet.getLastRow();
const range = 'A1:A' + last ;
const data = sheet.getRange(range).getValues();
const counts = {};
data.forEach(function (x) { counts[x] = (counts[x] || 0) + 1; });
var result = Object.entries(counts);
return result;
}
这会生成一个数组,其中包含每个唯一值以及它在列中出现的次数。 我现在需要仅在该行存在另一个值时才计算该值。
例如
A 校 | B 上校 |
---|---|
Val1 | |
Val1 | |
Val1 | 某事 |
Val1 | 某事 |
Val2 | 某事 |
Val2 | 某事 |
Val2 |
我期望输出为 [Val1, 2][Val2, 1],它应该只计算 COLB 为空的行。
我尝试过嵌套循环,但我越来越困惑,希望得到一些帮助。
使用
Array.filter()
,如下所示:
function countRecords() {
const counts = {};
SpreadsheetApp.getActiveSheet()
.getRange('A1:B')
.getValues()
.filter(row => row[1])
.forEach(([key, _]) => counts[key] = (counts[key] || 0) + 1);
return Object.entries(counts);
}
参见 Array.filter() 和 解构赋值。