-1

Ich habe Daten, die wie folgt aussieht:Validieren von Benutzereingaben in GSheets/Javascript

Task | Number 
A  |  1 
B  |  2 
C  |  2 
D  |  3 
E  |  3 
F  |  3 

Es gibt zwei Spalten. Einer mit Aufgaben und der andere mit Werten. Mein Ziel ist es auf Google Sheets, wenn der Benutzer in einer Aufgabe und einer Reihe tritt, dass der Code gegen alle anderen Zahlen überprüfen wird

So zum Beispiel, wenn ich die oben genannten Daten haben, und der Benutzer wieder

tritt

F | 3

, dass der Code dieses Benutzereingabe ablehnen ist

Sie den Code unten. Ich habe es ausgeführt, und in den Alarmfeldern, die Gleichung

einheitlich validiert auf false. Der folgende Code deklariert also 3 == 3 ist eigentlich eine falsche Aussage. Die Frage ist warum? Und wie kann ich dieses Problem beheben?

function checkEntry(){ 

    //store the range as that cell 
    var rng = ss.getRange(8, 2) 

    //ui.alert(rng.getValue()); 
    var dict = {} 
    var i = 2 
    var k = 1 

    //check the sheet 
    for(i=2;i<=last;i++){ 
    ui.alert(ss.getRange(i, 2).getValue()); 
    ui.alert(ss.getRange(rng.getRow(), rng.getColumn()).getValue()); 

    ui.alert(ss.getRange(i, 2).getValue() == ss.getRange(rng.getRow(), rng.getColumn()).getValue()); 


    } 
+0

Der Code läuft überhaupt nicht, weil "last" nicht definiert ist. Siehe [MCVE]. Außerdem steht (8, 2) in der achten Zeile, die Ihre Beispieldaten nicht haben. Schließlich, wenn Ihr Code eine Menge von getRange(). GetValue() in einer Schleife hat, verwenden Sie Apps Script falsch. Es sollte einen Aufruf zu "getRange" vor der Schleife geben; Der Bereich umfasst alle Daten, auf die Sie in dieser Funktion zugreifen möchten. – FTP

Antwort

0

Ich denke, das wird für Sie arbeiten.

function checkEntry(){ 
    var ss=SpreadsheetApp.getActive(); 
    var sh=ss.getActiveSheet(); 
    var rng=sh.getDataRange(); 
    var vA=rng.getValues(); 
    var u=[];//uniques 
    var r=[];//duplicates 
    for(var i=1;i<vA.length;i++){ 
    var s=vA[i][0].toString()+vA[i][1].toString(); 
    if(u.indexOf(s)==-1){ 
     u.push(s); 
    }else{ 
     r.push(i); 
    } 
    } 
    for(var i=vA.length-1;i>0;i--){ 
    if(r.indexOf(i)>-1){ 
     sh.deleteRow(i+1);//delete duplicates 
    } 
    } 
} 
Verwandte Themen