我在尝试推送到阵列时遗漏了一些东西,同时防止了重复。
我一直在寻找将员工的每一次出现都推送到新员工阵列的代码,但我无法弄清楚如何只推送一个唯一的列表。
我的最终数组是一个二维数组,因此可以将setValues()返回到Google表格的一列中。
function queryEmployees(){
var sh = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
var lRow = sh.getLastRow();
var data = sh.getRange(1,1,lRow,2).getValues();
var employees = [];
for(i=0;i<data.length;i++){
if(data[i][0]==='Team member evaluated'){
if(employees.indexOf([data[i][1]])===-1){
employees.push([data[i][1]]);
}
}
}
Logger.log(employees);
Logger.log(employees.length);
SpreadsheetApp.getActiveSpreadsheet().getSheets()[1]
.getRange(1,1,employees.length,1).setValues(employees);
}
答案 0 :(得分:1)
如果没有重写函数或编写自己的函数,IndexOf不能与数组中的对象一起使用。但它可以很好地处理字符串。所以一个简单的解决方法就是创建一个并行的字符串数组,这样我们就可以保持代码几乎完好无损。因此,添加,
var employeesIndex=[];
之后
var employees=[]
改变你内心的条件&#34;如果&#34;
的条款(employeesIndex.indexOf(data[i][1])===-1)
并在if块中添加一行来更新索引
employeesIndex.push(data[i][1]);
这样,当您的employees数组包含您需要的数组时,索引会跟踪重复项。