0

Googleのスプレッドシートには、さまざまな列(電話番号、IMEI、URL、Id、Reg No、Timeの6列など)に分散した複数のデータが含まれています。私は15K行のデータを持っています。Google Appsスクリプト/ Googleスプレッドシートで2D配列をソートする方法

重複した電話番号(列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私はあなたを得ることができます私は同じようなスプレッドシートを共有することができるようにメールのID –

答えて

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

あなたの時間のためにあまりにもありがとうございます..私は次のコードを試みたが、まだこれらは動作していません..私の主な目的は、電話で他の5つの関連データnumber..pleaseコードで助けてください –

+0

エラーメッセージ//比較メソッドは、その一般契約に違反しています。 (行7、ファイル "コード") –

+0

関数を抹消する関数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; }) ; (値[i-1] [0] == values [i] [0]){ dupData.push(values [i]){ for(var i = 1; i

関連する問題