Google Sheets automatisch sortieren: Skript-Generator
Füllen Sie das Formular aus und erhalten Sie ein Apps-Script, das einen Bereich Ihrer Google-Tabelle sortiert hält: bei jeder Änderung und auf Wunsch auch nach Antworten aus Google Formularen und Zeilen, die andere Tools hinzufügen. Es kann außerdem angehakte Zeilen nach unten schieben und nach Ihrer eigenen Reihenfolge sortieren, etwa Hoch, Mittel, Niedrig. Das Skript entsteht in Ihrem Browser; nichts, was Sie hier eingeben, wird irgendwohin gesendet. Es sortiert die echten Zeilen mit Googles eigenem Range.sort: Die Kopfzeile bleibt oben, leere Zellen kommen zuletzt und die Formatierung wandert mit ihren Zeilen. Der erzeugte Code bleibt Englisch (Apps Script ist JavaScript); nur die Kommentare darin sind deutsch. Die deutsche Fassung dieser Seite ist maschinell unterstützt übersetzt. Geprüft anhand der Apps-Script-Dokumentation von Google am 1. November 2026.
// Auto-Sortier-Skript, erstellt mit keepsorted.tuper.app/de/google-sheets-automatisch-sortieren-skript/
// Hält 'Tabelle1'!A1:F sortiert nach A (A bis Z, kleinste zuerst).
// Kopfzeilen bleiben oben; leere Zellen kommen zuletzt; Groß-/Kleinschreibung wird ignoriert (Sortierregeln von Google Sheets).
const SHEET_NAME = 'Tabelle1';
const FIRST_ROW = 1; // erste Zeile des Bereichs, Kopfzeilen eingeschlossen
const HEADER_ROWS = 1; // Zeilen oben im Bereich, die sich nie bewegen
const FIRST_COLUMN = 1; // A
const LAST_COLUMN = 6; // F
const LAST_ROW = 0; // 0 = bis zur letzten Zeile mit Daten
const SORT_KEYS = [ // der erste Schlüssel gilt, spätere entscheiden bei Gleichstand
{column: 1, ascending: true}, // A, A bis Z
];
// Läuft von selbst bei jeder Änderung durch eine Person (einfacher Trigger, keine Einrichtung).
function onEdit(e) {
const sheet = e.range.getSheet();
if (sheet.getName() !== SHEET_NAME) return;
sortRange_(sheet);
}
function sortRange_(sheet) {
if (!sheet) return;
const top = FIRST_ROW + HEADER_ROWS;
const bottom = LAST_ROW ? Math.min(LAST_ROW, sheet.getLastRow()) : sheet.getLastRow();
if (bottom - top + 1 < 2) return;
const last = LAST_COLUMN || sheet.getLastColumn();
sheet.getRange(top, FIRST_COLUMN, bottom - top + 1, last - FIRST_COLUMN + 1)
.sort(SORT_KEYS);
}
Sie stehen auf der Liste. Wir schreiben Ihnen einmal.
So installieren Sie es
- Öffnen Sie Ihre Tabelle und wählen Sie Erweiterungen > Apps Script.
- Löschen Sie den Inhalt von
Code.gs, fügen Sie das Skript ein und klicken Sie auf Speichern (Diskettensymbol). - Für Änderungen war es das schon:
onEditist ein einfacher Trigger. Er läuft für alle, die die Tabelle bearbeiten, ohne Autorisierungsschritt.
Wenn Sie Formulare oder andere Tools angehakt haben: wählen Sie oben im Editor in der Funktionsliste installTriggers, klicken Sie einmal auf Ausführen und erlauben Sie den Zugriff, wenn Google fragt. Prüfen Sie das Ergebnis auf der Seite Trigger (Wecker-Symbol). Diese Trigger laufen unter Ihrem Konto, auch bei geschlossener Tabelle.
Probieren Sie es zuerst an einer Kopie der Tabelle aus. Eine Sortierung machen Sie mit Bearbeiten > Rückgängig oder über Datei > Versionsverlauf rückgängig.
Was die einzelnen Teile tun (Apps Script: Bereich sortieren)
sheet.getRange(row, column, numRows, numColumns)wählt die Zeilen unterhalb der Kopfzeile.getLastRow()lässt den Bereich mit Ihren Daten wachsen, neue Zeilen sind also dabei..sort(SORT_KEYS)ist Range.sort. Es nimmt eine Spaltennummer (.sort(3)), eine Angabe (.sort({column: 3, ascending: false})) oder eine Liste von Angaben für mehrere Spalten. Spaltennummern zählen ab Spalte A des Blatts, nicht ab dem Anfang des Bereichs.onEdit(e)läuft nach jeder Änderung durch eine Person;e.rangeist die geänderte Zelle, mit der das Skript das Blatt (und mit dem ersten Kontrollkästchen die Spalte) prüft.onFormSubmit,onChangeund der zeitgesteuerte Trigger sind installierbare Trigger. Eine Formular-Antwort oder eine Zeile, die ein anderes Skript oder die Sheets-API schreibt, ist keine Bearbeitung, daher siehtonEditsie nie; laut Google lösen Änderungen durch Skripte und die API gar keinen Trigger aus, deshalb gibt es den Timer.
So funktioniert der erzeugte Code: Erledigte nach unten
Für eine To-do-Liste oder einen Tracker mit Kontrollkästchen-Spalte haken Sie Erledigte nach unten an und geben die Spalte mit den Kontrollkästchen ein. Bei jedem An- oder Abhaken schiebt das Skript die angehakten Zeilen (TRUE) unter die nicht angehakten. Nicht angehakte und leere Kästchen bleiben oben. Innerhalb jeder Gruppe behalten die Zeilen ihre Reihenfolge, außer Sie wählen zusätzlich Sortierspalten; dann wird jede Gruppe danach sortiert (zum Beispiel offene Aufgaben nach Fälligkeit, die erledigten darunter). Das Skript liest die Werte einmal mit getValues(), bestimmt die neue Reihenfolge im Speicher (stabile Sortierung, gleiche Zeilen tauschen nie), schreibt die neue Position jeder Zeile in eine temporäre Spalte rechts von Ihrem Bereich, lässt Range.sort die echten Zeilen danach sortieren und löscht die Spalte wieder. Weil Google die echten Zeilen verschiebt, wandern Formeln und Formatierung mit ihren Zeilen, genau wie beim manuellen Sortieren. Entfernen Sie ein Häkchen, kehrt die Zeile zu den offenen Zeilen zurück.
So funktioniert der erzeugte Code: Eigene Reihenfolge
Range.sort kennt nur A bis Z und Z bis A, daher sortiert eine Spalte „Priorität“ als Hoch, Niedrig, Mittel. Geben Sie die gewünschte Reihenfolge ein (Hoch, Mittel, Niedrig oder ein Wert pro Zeile) und wählen Sie, für welche Sortierspalte sie gilt. Das Skript gibt jedem Wert seinen Platz in Ihrer Liste (Groß-/Kleinschreibung und zusätzliche Leerzeichen werden ignoriert); Werte außerhalb der Liste folgen nach den aufgelisteten, von A bis Z sortiert, und leere Zellen kommen zuletzt. Z bis A bei dieser Spalte kehrt die Liste um und sortiert die übrigen Werte von Z bis A (weiterhin nach den aufgelisteten). Die Zeilen werden dann mit derselben temporären Rangspalte wie oben verschoben, die Kopfzeile bleibt oben, Formeln und Formatierung wandern mit ihren Zeilen. Sie können es mit „Erledigte nach unten“ kombinieren: offene Aufgaben nach Priorität, darunter die erledigten.
Das KeepSorted-Add-on macht beides ohne Code (Kontrollkästchen als Schlüssel und eigene Reihenfolgen sind Pro-Funktionen), siehe unten.
Die Haken
- Zeilen bewegen sich, während Leute arbeiten. Jede Änderung sortiert den Bereich neu, eine halb getippte Zeile kann also wegspringen. Das erste Kontrollkästchen beschränkt das Sortieren auf Änderungen in den Sortierspalten; füllen Sie diese zuletzt aus.
- Ein Bereich pro Skript. Tabellen, die in denselben Spalten untereinander stehen, werden zu einer vermischt. Geben Sie jeder Tabelle ihre eigene Kopie von
sortRange_mit eigenen Zeilen. - Text, der wie eine Zahl oder ein Datum aussieht, wird als Text sortiert („10“ vor „2“). Prüfen Sie es mit
=ISTZAHL(B2). - Eigene Reihenfolge und Erledigte nach unten fügen beim Sortieren kurz eine Spalte hinzu. Ist das Blatt geschützt oder reagiert ein anderes Skript auf neue Spalten, nehmen Sie stattdessen eine Hilfsspalte mit
=VERGLEICH(C2; $H$2:$H$4; 0)(in H2:H4 steht Ihre Reihenfolge, Hoch, Mittel, Niedrig) und sortieren danach. - Verbundene Zellen im Bereich lassen die Sortierung scheitern; den Fehler zeigt der Editor unter Ausführungen.
- Einfache Trigger enden nach 30 Sekunden; der Timer verbraucht Ihr tägliches Trigger-Laufzeitkontingent.
Ohne Code: KeepSorted
KeepSorted ist ein Google-Sheets-Add-on, das dasselbe aus einer Seitenleiste erledigt: Bereich wählen, Sortierspalten wählen, Speichern. Dieselben Regeln wie beim Skript (Kopfzeile bleibt, leere Zellen zuletzt, Zeilen wandern mit Formatierung und Formeln). Kostenlos: ein Bereich pro Blatt, bis zu 2 Sortierspalten, keine Testphase. Pro (5 $ im Monat oder 39 $ im Jahr): bis zu 5 Sortierspalten, eigene Reihenfolgen wie Hoch > Mittel > Niedrig, angehakte Zeilen nach unten, übereinander stehende Tabellen getrennt sortiert sowie Sortieren nach Formular-Antworten, Änderungen anderer Bearbeiter und einer stündlichen Prüfung.
KeepSorted ist gebaut und im Test. Es ist noch nicht im Google Workspace Marketplace. Hinterlassen Sie Ihre E-Mail-Adresse und wir schreiben Ihnen einmal, sobald Sie es installieren können. Die Seite des Add-ons ist auf Englisch.
Der Generator und die Skripte bleiben in jedem Fall kostenlos.
Weitere KeepSorted-Anleitungen
- Sortierformel-Generator (SORT, SORTN, QUERY: eine sortierte Kopie, ohne Skript)
- Auto-sort when a new row is added (English)
- Auto sort script generator (English)
Quellen
- Range.sort (Referenz) · Sheet.getLastRow
- Einfache Trigger (onEdit, 30-Sekunden-Grenze) · installierbare Trigger (onFormSubmit, onChange, zeitgesteuert; Änderungen durch Skripte und API lösen keine Trigger aus)
- everyMinutes: 1, 5, 10, 15 oder 30 · Apps-Script-Kontingente