function updateSheetNameOnDuplicate() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var activeSheet = ss.getActiveSheet();
var sheetName = activeSheet.getName();
// Überprüfen, ob der aktuelle Blattname dem Muster "Tagesplan KW XX" entspricht
var regex = /^Tagesplan KW (\d+)$/;
var match = sheetName.match(regex);
if (match) {
var currentKW = parseInt(match[1]);
var nextKW = currentKW + 1;
activeSheet.setName("Tagesplan KW " + Utilities.formatString("%02d", nextKW));
// Optional: Aktualisiere auch das Datum in C2 für die nächste Woche
var currentDate = ss.getSheetByName(sheetName).getRange("C2").getValue();
if (currentDate instanceof Date) {
var nextWeekDate = new Date(currentDate);
nextWeekDate.setDate(currentDate.getDate() + 7);
// Überprüfe, ob die berechnete KW mit der KW des neuen Datums übereinstimmt und korrigiere ggf.
var calculatedNextKW = Utilities.formatString("%02d", getKW(nextWeekDate));
if (calculatedNextKW != Utilities.formatString("%02d", nextKW)) {
// Wenn die berechnete KW nicht übereinstimmt, suchen wir den Montag der Ziel-KW
var targetKWStartDate = getMondayOfWeek(nextKW, nextWeekDate.getFullYear());
ss.getSheetByName(activeSheet.getName()).getRange("C2").setValue(targetKWStartDate);
} else {
ss.getSheetByName(activeSheet.getName()).getRange("C2").setValue(nextWeekDate);
}
}
}
}
function onDuplicate(e) {
updateSheetNameOnDuplicate();
}
function getKW(date) {
var d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));
var dayNum = d.getUTCDay() || 7;
d.setUTCDate(d.getUTCDate() + 4 - dayNum);
var yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));
return Math.ceil((((d - yearStart) / 86400000) + 1) / 7);
}
function getMondayOfWeek(week, year) {
var simple = new Date(year, 0, 1 + (week - 1) * 7);
var dow = simple.getDay();
var ISOweekStart = simple;
if (dow <= 4)
ISOweekStart.setDate(simple.getDate() - simple.getDay() + 1);
else
ISOweekStart.setDate(simple.getDate() + 8 - simple.getDay());
return ISOweekStart;
}