是否有可能获取类似DISTINCT记录。 我已经创建了一个scriptDB表格电子表格,其中包含所有员工姓名和经理姓名。我需要获得所有的经理姓名。但事情是管理员列做了重复,因为多个emp有相同的管理器。查询在脚本DB DISTINCT
我该如何得到这个?
是否有可能获取类似DISTINCT记录。 我已经创建了一个scriptDB表格电子表格,其中包含所有员工姓名和经理姓名。我需要获得所有的经理姓名。但事情是管理员列做了重复,因为多个emp有相同的管理器。查询在脚本DB DISTINCT
我该如何得到这个?
有没有内置的提取物中的某些部分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;
}
虽然问题是,具体如何使用脚本,我会补充说完全避免了脚本第二个答案。您可以使用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()
呢。
使用上述公式之一的好处是,他们将自动重新计算工作表上的信息何时发生变化。
这对我目前的问题没有帮助,因为我确实对scriptDb有依赖性,但是我肯定可以在另一个电子表格中使用它。感谢您解释公式。 – Srikanth
是的,我现在正在做类似的事情。 'var managerList = sheet.getRange('B:B')。getValues();'然后删除重复项,然后用每个经理名称运行ScriptDb查询。问题是我有一个包含〜3000Rows和〜20Cols数据的电子表格。所以我觉得这有点费时,所以检查我们是否有办法直接从ScriptDb做到这一点。 – Srikanth