2017-12-15 12 views
1

私は1つのGoogleシートの特定の列をスキャンし、新しい追加が重複しているかどうかを確認するgoogleスクリプトを作成しようとしています。私は次のことを考え出したが、うまくいかない。限りイムとして認識してポップアップダイアログボックスの値が重複しています

function hasDuplicates() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName("Customer and form Details"); 
    var array = sheet.getRange('B2:B' + lastRow).getValues(); 
    var valuesSoFar = []; 

    for (var i = 0; i < array.length; ++i) { 
     var value = array[i]; 
     if (value in valuesSoFar) { 
      SpreadsheetApp.getUi().alert('Hello, world!'); 
     } 
     else{ 
     valuesSoFar.push(value); 
     } 
    } 
} 

上記のコードはarrayという配列を作成し、私が興味を持って特定の範囲を移入します。私は、新しい、空の配列がvaluesSoFarと呼ばれる作成。コードは列をループし、その項目が既に表示されているかどうかを順番に確認します。そうでなければ、それは新しいアイテムのリストに追加され、そのまま続く。

答えて

0

オンラインドキュメントコードを使用しているようです。

しかし、以下の割り当てが欠落しています。

var lastRow = sheet.getLastRow(); 

か、単にsheet.getLastRow()

アップデートでlastRowを置き換える:私はあなたが実際にあなたの列内の任意の重複がある場合は、以下のソリューションが動作する必要があることを前提とし をB:

function hasDuplicates() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName("Customer and form Details"); 
    var array = sheet.getRange('B2:B' + sheet.getLastRow()).getValues(); 
    var valuesSoFar = []; 

    for (var i = 0; i < array.length; ++i) { 
    var value = array[i][0]; 
    if (value in valuesSoFar) { 
     SpreadsheetApp.getUi().alert('Hello, world!'); 
    } else { 
     valuesSoFar.push(value); 
    } 
    } 
} 

まだ働いて、すみません。

実行中のエラーの種類に関する情報を提供できない限り、私はもうこれを検討しません。

+0

私はオンラインドキュメントコードの側面を使用しましたが、私の要件に合わせて調整しました。私は割り当てを追加しましたが、まだ動作していません – PaulBarr

+0

あなたは何らかのデバッグをしましたか?あなたが提供することができる追加情報?「働かない」以外? 'sheet.getRange'が1次元配列を返す前の例ですか? –

+0

ログをどのように表示しますか?それはGoogleのシートまたはスクリプト内ですか? – PaulBarr

関連する問題