Google Sheets: Dynamische Tabellenblattbenennung
/0 Kommentare/in Google Sheets/von axxlhDynamische Tabellenblattbenennung nach Kalenderwoche beim Duplizieren in Google Sheets
Diese Anleitung zeigt, wie du mit Google Apps Script den Namen eines duplizierten Tabellenblatts automatisch anpassen kannst, sodass er die fortlaufende Kalenderwoche anzeigt. Dies ist besonders nützlich für wöchentliche Planungen oder Berichte.
Voraussetzungen:
-
Du hast eine Google Sheets Datei.
-
Ein Tabellenblatt in deiner Datei ist nach dem Muster „Tagesplan KW XX“ benannt (z.B. „Tagesplan KW 19“), wobei „XX“ für die aktuelle Kalenderwoche steht.
-
Optional: In Zelle C2 deines Tabellenblatts steht ein Datum, das den Beginn der Woche repräsentiert.
Schritte:
-
Öffne den Skripteditor:
-
Gehe in deiner Google Tabelle zu Erweiterungen> Apps Script…
-
Ein neues Browserfenster oder Tab mit dem Skripteditor wird geöffnet.
-
-
Füge das Skript ein:
-
Lösche gegebenenfalls vorhandenen Code im Editor.
-
Kopiere den folgenden Code und füge ihn in den Skripteditor ein:
-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
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; } |
-
Speichere das Skript:
-
Klicke auf das Diskettensymbol (💾) oben links im Skripteditor.
-
Gib dem Skript einen Namen (z.B. „AutoSheetNameKW“) und klicke auf OK.
-
-
Schließe den Skripteditor.
-
Berechtigungen erteilen:
-
Wenn du das Skript zum ersten Mal ausführst (indem du ein Blatt duplizierst), wirst du möglicherweise aufgefordert, dem Skript Berechtigungen zu erteilen. Folge den Anweisungen auf dem Bildschirm und erlaube dem Skript den Zugriff auf deine Google Sheets Datei.
-
Anwendung:
-
Wähle das Tabellenblatt aus, dessen Name dem Muster „Tagesplan KW XX“ entspricht und das du für die nächste Woche duplizieren möchtest.
-
Klicke mit der rechten Maustaste auf den Namen des Tabellenblatts.
-
Wähle Duplizieren.
-
Das neu erstellte Tabellenblatt wird automatisch umbenannt, um die nächste fortlaufende Kalenderwoche anzuzeigen (z.B. von „Tagesplan KW 19“ zu „Tagesplan KW 20“).
-
Optional: Wenn in Zelle C2 ein gültiges Datum stand, wird dieses im duplizierten Blatt automatisch auf den Montag der nächsten Kalenderwoche aktualisiert.
Hinweis:
-
Die Funktion
onDuplicate(e)
ist ein einfacher Trigger und unterliegt bestimmten Einschränkungen. In den meisten Fällen des manuellen Duplizierens funktioniert er jedoch zuverlässig. -
Stelle sicher, dass die anfänglichen Tabellenblattnamen dem vorgegebenen Muster entsprechen, damit das Skript sie korrekt erkennt und bearbeiten kann.
Bildnachweis: https://pixabay.com/de/photos/planer-tagebuch-veranstaltungen-7256373/
Hinterlasse einen Kommentar
An der Diskussion beteiligen?Hinterlasse uns deinen Kommentar!