我有一个谷歌电子表格,其中包含分布在不同列上的多个数据(如6列 - 电话号码,IMEI,URL,Id,Reg No和Time),我有15K行数据。
我必须在新的工作表中找到/显示所有重复的电话号码(第0列)和与之相关的数据。
然而,当我尝试对数据进行排序时,它会引发我的错误,如
"比较方法违反了其总合同。 (第6行,文件"代码")"
下面显示的代码供您参考:
function myFunction() {
var values = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('DUP').getDataRange().getValues()
var dupData = new Array();
values.sort(function sortFunction(a, b) {
if (a[0] === b[0]) {
return 0;
}
else {
return (a[0] < b[0]) ? -1 : 1;
}
});
for(i=1;i<values.length;i++)
{
if (values[i][0] == values[i+1][0]) {
dup.push(values[i]);
}
}
var new1 = dpnum.getSheetByName('Test123');
new1.getRange(1,1,dup.length,dup[0].length).setValues(dup);
}
答案 0 :(得分:0)
您的代码可以像这样简化(代码注释):
function myFunction() {
var values = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('DUP').getDataRange().getValues()
var dupData = new Array();
values.sort(function(x,y){ // sort on first column
var xp = x[0];
var yp = y[0];
return xp < yp ? -1 : xp > yp ? 1 : 0;// return 0 if equal, 1 if > and -1 if <
});
for(var i=1 ; i<values.length ; i++){
if (values[i-1][0] == values[i][0]) { // I changed the index as well to keep only valid data
dup.push(values[i]);
}
}
var new1 = dpnum.getSheetByName('Test123');
new1.getRange(1,1,dup.length,dup[0].length).setValues(dup);
}