2017-04-16 3 views
0

スプレッドシートから重複を削除するスクリプトを作成しようとしています。予期せず動作しないセルの値と一致するGoogleスプレッドシート

私はすべての値を列から取り出し、getValues()を使用して配列に配置します。次に、配列[i]と配列[i + 1]を比較するforループを使用します。一致が見つかった場合、問題のあるデータを削除するコードが実行されます。

残念ながら、一致が見つかりませんでした。

手動で入力した配列で自分のコードを試したところ、うまくいきました。私はその後、手動でコード化された配列とスプレッドシートが配列された配列を比較するコードを試しました。それは再び働いた。スプレッドシートの値を他のスプレッドシートの値と比較しようとすると、問題が発生します。彼らは決して一致しません。地球上で何が起こっているのですか?

function RemoveDuplicates() { 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var IDRangeString = "H2:H"+ getFirstEmptyRow(); 
    var IDRange = sheet.getRange(IDRangeString); 
    var IDArray = IDRange.getValues(); 
    Logger.log('started RemoveDuplicates(), active sheet is ' + sheet.getName() 
+ ', specified range is ' + IDRangeString); 

    for(var i = 0; i < IDArray.length; i++) { 
    Logger.log('comparing index ' + i + ': ' + IDArray[i] + ' with index ' + 
(i+1) + ': ' + IDArray[i+1]); 

    if(IDArray[i] == IDArray[i+1]) { 
     Logger.log('Match Found'); 
    } else if(IDArray[i] != IDArray[i+1]) { 
     Logger.log('Match not found'); 
    } else { 
     Logger.log('Match neither found nor not found'); 
    } 
    } 
} 

答えて

0

私は問題を解決しましたが、なぜそれが最初にうまくいかなかったのかまだ分かりません。

Array [i] .toString()を使用して、これらの値を比較すると、そのトリックが行われたようです。

私は変数が異なる変数の型として格納されていると仮定することができますが、スプレッドシートにいくつかの同じ値を手動で入力してチェックしたことを考えれば、わかりません。

+0

Get values関数は、上記のコードで1次元配列を比較しようとしているのに対し、2次元配列を返します。配列[I] .tostringは基本的にインデックスIの各配列を文字列に変換し、配列をチェックすることができます。 array [i] [0] == array [i + 1] [0]の代わりにこれを試すことができます。 –

関連する問題