Ich führe ein Formular aus, das in ein Google-Blatt einfließt. Wir stoßen auf das Problem, dass Nutzer mehrfach auf "Senden" klicken, was zu mehreren Übermittlungen der gleichen Informationen in schneller Folge führt. Wir haben jedoch auch Benutzer, die zu einem späteren Zeitpunkt zurückkommen und ein neues Formular ausfüllen.Google Tabellen - Duplikate nur entfernen, wenn sie am selben Tag eingereicht wurden
Ich habe gefunden, wie doppelte Einträge entfernt werden - aber ist es möglich, das Skript auch so zu definieren, dass es nur entfernt wird, wenn sie am selben Tag eingereicht wurden? Die Form fügt automatisch einen Zeitstempel in diesem Format: 8/15/2016 16:39:27
Mein Skript ist wie folgt:
function removeDuplicates() {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
var newData = new Array();
for(i in data){
var row = data[i];
var duplicate = false;
for(j in newData){
if(row[3] == newData[j][3] && row[4] == newData[j][4]){
duplicate = true;
}
}
if(!duplicate){
newData.push(row);
}
}
sheet.clearContents();
sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);
}
Es prüft Spalten D (3) und E (4) (die der Postleitzahl und der E-Mail-Adresse des Benutzers entsprechen) für Duplikate.
Ich kann das Blatt bei Bedarf teilen - es hat sowohl E-Mail-Adressen und Home-Adressen unserer Benutzer, so dass ich wieder mit Dummy-Daten füllen müsste!
Das scheint nicht zu funktionieren - es entfernt den neuesten Eintrag unabhängig davon, wann einer der Einträge eingereicht wurde. – crossbeats
Es scheint, als würde das wegen Ihrer verschachtelten Schleifen passieren. Wenn Ihre äußere Schleife auf dem ersten Ereignis ist und die innere Schleife das erste Ereignis erreicht, denkt es, dass es ein Duplikat ist. Sie können dies beheben, indem Sie der Anweisung "if" in der Antwort '&& oldTime! = NewTime' hinzufügen. Ich habe es oben geändert. –