Warum funktioniert dieses Script nicht wie ich es möchte?
Ich möchte in zwei Schleifen und zwei Tabellenblättern eine MSN Nummer des einen Tabellenblattes mit der MSN Nummer des anderen Tabellenblattes vergleichen.
Sollten die nicht gleich sein und das Datum in einem bestimmten Bereich sein, dann soll er es übernehmen und im Tabellenblat "Beauftragung" schreiben.
Soweit die Theorie...
Im groben funktioniert es auch, nur drücke ich nach der Übernahme noch mal auf den Button zum Starten des Scriptes, so übernimmt er die gleichen Nummern nocheinmal und hängt sie unten an.
Was mache ich falsch?
function Vergleich(){
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Beauftragung");
var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Quintiq");
var start = sheet.getRange("A1").getValue();
var StartDatum = Utilities.formatDate(new Date(start),"GMT+1","yyyy/MM/dd");
var end = sheet.getRange("B1").getValue();
var EndDatum = Utilities.formatDate(new Date(end),"GMT+1","yyyy/MM/dd");
sheet.getRange("A1").activate();
var RowB = sheet.getLastRow()+1;
var RowQ = sheet2.getLastRow();
var Daten = sheet.getRange(3,1,RowB-1,1).getValues(); //MSN-Daten holen --> Array
for (x in Daten) {
var MSN = Daten[x];
for (var i = 2; i <= RowQ; i++) {
var Datum = sheet2.getRange("E"+i).getValue();
var DatumQ = Utilities.formatDate(new Date(Datum),"GMT+1","yyyy/MM/dd");
var MSNQ = sheet2.getRange("A"+i).getValue();
var Zelle1 = '=if($A'+RowB+'="";"";VLOOKUP($A'+RowB+';Quintiq!$A$2:$J$400;5;0))'
var Zelle2 = '=if($A'+RowB+'="";"";VLOOKUP($A'+RowB+';Quintiq!$A$2:$J$400;8;0))'
var Zelle3 = '=if($A'+RowB+'="";"";VLOOKUP($A'+RowB+';Quintiq!$A$2:$J$400;9;0))'
var Zelle4 = '=if($A'+RowB+'="";"";VLOOKUP($A'+RowB+';Quintiq!$A$2:$J$400;3;0))'
var Zelle5 = '=if($A'+RowB+'="";"";VLOOKUP($A'+RowB+';Quintiq!$A$2:$J$400;4;0))'
if (MSN != MSNQ && DatumQ > StartDatum && DatumQ <= EndDatum){
sheet.getRange("A"+RowB).setValue(MSNQ);
sheet.getRange("B"+RowB).setValue(Zelle1);
sheet.getRange("D"+RowB).setValue(Zelle2);
sheet.getRange("F"+RowB).setValue(Zelle3);
sheet.getRange("H"+RowB).setValue(Zelle4);
sheet.getRange("I"+RowB).setValue(Zelle5);
RowB++;
}
}
}
}