Dieses Skript verarbeitet Zeiterfassungsdaten (Stempelzeiten) und erstellt eine tägliche Anwesenheitsstatistik. Für jeden Mitarbeiter und Tag wird der früheste Eintrag (Kommen) und der späteste Eintrag (Gehen) ermittelt und in eine Statistik-Tabelle geschrieben.

Sie benötigen zwei Tabellen:

  • Time records: Enthält die Spalten Name, Date und Time mit den Rohdaten der Zeiterfassung.
  • Statistics: Enthält die Spalten Name, Date, Clock in und Clock out für die Ergebnisse.
const timeRecordsTable = base.getTableByName('Time records');
const statisticsTable = base.getTableByName('Statistics');
const view = base.getViewByName(timeRecordsTable, 'Default View');
const rows = base.getRows(timeRecordsTable, view);

// Group by date and name
const groups = {};
rows.forEach(row => {
    const name = row['Name'] || '';
    const date = row['Date'] || '';
    const time = row['Time'] || '';
    if (!name || !date || !time) return;

    const key = date + '_' + name;
    if (!groups[key]) {
        groups[key] = {name: name, date: date, times: []};
    }
    groups[key].times.push(time);
});

// Create statistics entries
Object.keys(groups).forEach(key => {
    const group = groups[key];
    const sortedTimes = group.times.sort();
    const clockIn = sortedTimes[0];
    const clockOut = sortedTimes[sortedTimes.length - 1];

    base.addRow(statisticsTable, {
        'Name': group.name,
        'Date': group.date,
        'Clock in': clockIn,
        'Clock out': clockOut
    });
});

output.text('Attendance statistics computed.');

Passen Sie die Tabellen- und Spaltennamen an Ihre Struktur an. Das Skript fügt immer neue Zeilen in die Statistik-Tabelle ein – wenn Sie es mehrfach ausführen, sollten Sie die Statistik-Tabelle vorher leeren.

Die vollständige Funktionsreferenz finden Sie im SeaTable Developer Manual .