是否可以获取类似于DISTINCT的记录。 我创建了一个包含所有Employee Names和Manager名称的scriptDB表单电子表格。我需要获得所有经理的名字。但事情是经理专栏确实有重复,因为多个emp有同一个经理。
我如何得到这个?
答案 0 :(得分:1)
没有内置函数可以从ScriptDB中提取部分对象,但这里有一个函数将返回一组唯一的管理器名称。 (我猜测了你的数据结构,根据需要进行调整。)
function distinctManagers() {
var db = ScriptDb.getMyDb();
// Get employeers sorted by manager.
var results = db.query({type: 'employee'}).sortBy('manager', db.LEXICAL);
var distinctManagers = [];
while (results.hasNext()) {
var item = results.next();
if (distinctManagers.length == 0 || item.manager !== distinctManagers[distinctManagers.length-1]) {
distinctManagers.push(item.manager);
}
}
debugger;
return distinctManagers;
}
答案 1 :(得分:0)
虽然问题是关于使用脚本的具体问题,但我会添加第二个完全避免脚本的答案。您可以使用built-in spreadsheet functions
在电子表格中提取信息假设您的电子表格包含A列中的员工姓名和B列中的经理名称,以下是一些将生成唯一管理员名称列表的函数:
=unique(B2:B)
按照首次出现的顺序生成一列名称,不包括列标题。使用范围B:B
来包含标题。请注意,可能会出现空白名称,因为范围表达式包括B列中的所有内容。
=sort(unique(B2:B))
如上所述,已排序。
=query(A:B, ʺselect count(A) where A != '' pivot Bʺ,true)
显示每个经理的员工人数表,已分类。
=transpose(query(A:B, ʺselect count(A) where A != '' pivot Bʺ,true))
与上一个相同,但经理姓名出现在第一列中。
=filter(transpose(query(A:B, ʺselect count(A) where A != '' pivot Bʺ,true)),{true,false})
进一步优化了查询,仅包含 管理员名称。看起来就像sort(unique())
示例。一个区别:这不会产生空白经理名称; unique()
确实如此。
使用上述公式之一的优点是,当工作表上的信息发生变化时,它们会自动重新计算。