0

У меня есть электронная таблица google, которая содержит несколько данных, распространяемых по различным столбцам (например, 6 столбцов - номер телефона, IMEI, URL, идентификатор, номер и время) и У меня 15K строк данных.как отсортировать 2D-массив в скриптах google apps/google spreadsheet

Я должен найти/показать весь дублированный номер телефона (столбец 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

https://docs.google.com/spreadsheets/d/1qvd2rxwu_ZxMd_FBCoItIKvvAJStadmHmr3SwtSkco0/edit#gid=0 –

+0

https://docs.google.com/spreadsheets/d/1qvd2rxwu_ZxMd_FBCoItIKvvAJStadmHmr3SwtSkco0/edit#gid=0 @PeterSmith Могу ли я получить mail, так что я могу поделиться аналогичной электронной таблицей –

ответ

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); 
} 
+0

. Большое вам спасибо за ваше время. Я пробовал следующие коды, но все же они не работают. Основная цель - найти дубликаты телефонных номеров вместе с другими пятью связанными данными с телефоном номер..пожалуйста, помогите мне с кодом –

+0

сообщение об ошибке // Метод сравнения нарушает общий контракт. (строка 7, файл «Код») Dismiss –

+0

function myFunction() { var values ​​= SpreadsheetApp.getActiveSpreadsheet(). getSheetByName ('DUP'). getDataRange(). getValues ​​() var dupData = new Array(); values.sort (function (x, y) { var xp = x [0]; var yp = y [0]; return xp yp? 1: 0; }) ; для (var i = 1; i

Смежные вопросы