Zeitstempel-Funktion in OfficeScript: Meine Lösung für automatische Power Query Dokumentation

Schnellreferenz

Die Zeitstempel-Funktion erstellt automatisch das aktuelle Datum und die Uhrzeit für deine Excel-Projekte.
Mini-Beispiel: Statt manuell „11.05.2026“ in eine Zelle zu tippen (und zu vergessen), rufst du einfach

let stamp = zeitstempel(); // Gibt {datum: „11.5.2026“, zeit: „15:30“} zurück

Syntax-Übersicht: Die Funktion benötigt keine Parameter und gibt ein Objekt mit zwei Eigenschaften zurück:

zeitstempel().datum  // „11.5.2026“

zeitstempel().zeit   // „15:30“

Mein Problem: Power Query ohne Zeitstempel-Chaos

Ich hatte ein konkretes Problem:
Meine Power Query-Abfragen liefen automatisch via OfficeScript, aber meine Nutzer wussten nie, von wann die angezeigten Daten stammten. „Sind das die Zahlen von heute Morgen oder von letzter Woche?“ – diese Frage kam täglich.

Das konkrete Problem:

  • Power Query läuft automatisch, aber Nutzer sehen nicht WANN die Daten aktualisiert wurden
  • Manuell das Datum in eine Zelle schreiben? Wird vergessen oder ist falsch
  • Zeitreihen-Berechnungen brauchen einen exakten Referenzpunkt. Zum Beispiel, wenn ich ein Zeitfenster später definieren will, welches x-Tage/Wochen in die Vergangenheit/Zukunft geht.
  • Verschiedene KPIs berechnen sich unterschiedlich, manche historisch, manche als Prognose

Warum die Formellösung Heute() oder Jetzt() nicht praktikabel ist:

Man könnte auf die Idee kommen und einfach in eine Zelle die Formel Heute() oder Jetzt() schreiben. Dadurch schreibt Excel selber das aktuelle Datum und Uhrzeit in eine Zelle.

Aber dies macht Excel jedes Mal, wenn es geöffnet wird oder etwas neu berechnet.. Es zeigt also eher die letzte Aktivität in der Mappe an. Es ist nicht statisch und dadurch nicht brauchbar für einen definierten Zeitstempel.

Meine Lösung mit der Zeitstempel-Funktion:

Ich habe mir eine einfache Funktion geschrieben, welche ich an mein „Aktualisierungsscript“ gehangen habe.

Immer wenn man das Script nun ausführt, welches die Power Query Verbindungen aktualisiert, wird auch die Funktion für den Zeitstempel aufgerufen und dieser gesetzt.

// Automatisch und immer korrekt
let stamp = zeitstempel();

workbook.getActiveWorksheet()
.getRange(„A1“)
.setValue(„Daten vom “ + stamp.datum + “ um “ + stamp.zeit);

// Zeitstempel als Basis für Zeitreihen-Formeln

Syntax-Erklärung: So funktioniert der Code

Lass uns den Code Schritt für Schritt durchgehen und verstehen, was jeder Teil macht:

Die Grundstruktur

function zeitstempel() {

// Zeitkomponenten generieren

const zeitstempel = new Date();
const jahr = zeitstempel.getFullYear();
const monat = zeitstempel.getMonth() + 1;
// Indexbasierte Zählung Januar = 0    
const tag = zeitstempel.getDate();
const stunde = zeitstempel.getHours();
const minute = zeitstempel.getMinutes();

// Deutsche Formatierung

let zeitstempel_datum = tag + „.“ + monat + „.“ + jahr;
let zeitstempel_zeit = stunde + „:“ + minute;    
 

return {
datum: zeitstempel_datum,
zeit: zeitstempel_zeit
} }

Die Funktion zeitstempel() ist eine eigenständige Funktion, die du in jedes deiner OfficeScript-Projekte kopieren kannst. Sie löst mein ursprüngliches Problem: Automatische, fehlerfreie Zeitstempel für Power Query-Updates.

Zeitkomponenten generieren

Beispiel wenn wir heute den 05.12.2026 15:30 Uhr hätten.

const zeitstempel = new Date();           // Aktueller Zeitpunkt
const jahr = zeitstempel.getFullYear();   
// 2026
const monat = zeitstempel.getMonth() + 1;
// 5 (Mai, +1 wegen 0-basiert)
const tag = zeitstempel.getDate();       
// 11
const stunde = zeitstempel.getHours();    // 15
const minute = zeitstempel.getMinutes(); 
// 30

Code-TeilErklärung
new Date()Erstellt ein neues Datums-Objekt mit dem exakten aktuellen Zeitpunkt
getFullYear()Gibt das vollständige Jahr zurück (z.B. 2026)
getMonth() + 1Monat (0-11), daher +1 für echten Monat (1-12)
getDate()Tag des Monats (1-31)
getHours()Stunde im 24-Stunden-Format (0-23)
getMinutes()Minuten (0-59)

Formatierung der Ausgabe

let zeitstempel_datum = tag + „.“ + monat + „.“ + jahr;  // „11.5.2026“
let zeitstempel_zeit = stunde + „:“ + minute;           
// „15:30“

Hier werden die einzelnen Zeitkomponenten zu lesbaren Strings zusammengefügt. Das + verbindet die Werte mit Punkten bzw. Doppelpunkten zum gewohnten deutschen Format. Perfekt für meine Power Query-Dokumentation.
Ebenso könnte Excel selbst mit dieser Formatierung weiterarbeiten, wenn man dies bräuchte.

Weitere Praxisbeispiele

Die Zeitstempel-Funktion ist vielseitig einsetzbar. Hier sind konkrete Beispiele aus verschiedenen Business-Bereichen:

1. Power Query Datenaktualisierung (mein Hauptanwendungsfall)

// Nach Power Query-Update automatisch dokumentieren

let stamp = zeitstempel(); workbook.getActiveWorksheet().getRange(„A1“).setValue(„Daten aktualisiert: “ + stamp.datum + “ um “ + stamp.zeit); // Zeitstempel für nachgelagerte Berechnungen workbook.getActiveWorksheet().getRange(„Z1“).setValue(stamp.datum); // Versteckte Referenz

2. Zeitreihen-Berechnungen (8 Wochen zurück/voraus)

// Zeitstempel als Basis für KPI-Berechnungen

let referenz = zeitstempel(); workbook.getActiveWorksheet().getRange(„Z1“).setValue(referenz.datum);

Excelformeln können jetzt präzise auf diesen Zeitpunkt referenzieren =DATUM(JAHR(Z1);MONAT(Z1);TAG(Z1)-56) // 8 Wochen zurück

3. Bestellverfolgung im E-Commerce

// Bestellung automatisch mit Zeitstempel versehen

let stamp = zeitstempel(); workbook.getActiveWorksheet().getRange(„A5“).setValue(„Bestellung #1234“); workbook.getActiveWorksheet().getRange(„B5“).setValue(stamp.datum); workbook.getActiveWorksheet().getRange(„C5“).setValue(stamp.zeit);

4. Projektmeilensteine

// Meilenstein-Tracking

let meilenstein = zeitstempel();
let worksheet = workbook.getActiveWorksheet(); worksheet.getRange(„F12“).setValue(„Phase 1 abgeschlossen“); worksheet.getRange(„G12″).setValue(meilenstein.datum + “ um “ + meilenstein.zeit);

Häufige Fehler und Lösungen

Fehler 1: Funktion nicht kopiert

Falsch: Du rufst

let stamp = zeitstempel(); // Fehler: zeitstempel is not defined

Richtig: Kopiere die komplette Funktion in dein Script:

function main(workbook: ExcelScript.Workbook) {     // Dein Power Query Code hier     let stamp = zeitstempel();     // Zeitstempel verwenden }

// Zeitstempel-Funktion hier einfügen
function zeitstempel() {     // … kompletter Code }

Fehler 2: getCell() statt getRange()

Falsch: OfficeScript verwendet getRange(), nicht getCell():

worksheet.getCell(„A1“); // Funktioniert nicht in OfficeScript!

Richtig:

worksheet.getRange(„A1“); // Korrekte OfficeScript-Syntax

Fehler 3: Worksheet nicht definiert

Problematisch: Worksheet ohne Definition verwenden:

worksheet.getRange(„A1“); // Woher kommt worksheet?

Richtig: Zwei Möglichkeiten:

// Option 1: Worksheet definieren

let worksheet = workbook.getActiveWorksheet();
worksheet.getRange(„A1“); 

// Option 2: Direkt verwenden
workbook.getActiveWorksheet().getRange(„A1“);

Migration: Von manuell zu automatisch

So wandelst du bestehende Power Query-Projekte Schritt für Schritt um:

Schritt 1: Funktion in OfficeScript integrieren

Kopiere die komplette Zeitstempel-Funktion ans Ende deines Power Query OfficeScripts (nach der main-Funktion).

Schritt 2: Manuelle Zeitstempel ersetzen

Vorher (manuell in Excel-Zelle):

Du tippst nach jedem Power Query-Update manuell das Datum in eine Zelle: „11.05.2026“. Problem: Du vergisst es oder vertippst dich.

Nachher (automatisch via OfficeScript):

// Automatisch bei jedem Script-Lauf
let stamp = zeitstempel(); workbook.getActiveWorksheet().getRange(„A1“).setValue(„Daten vom “ + stamp.datum + “ um “ + stamp.zeit);

Schritt 3: Zeitreihen-Referenz einbauen

// Versteckte Referenz für Formeln
let referenz = zeitstempel(); workbook.getActiveWorksheet().getRange(„Z1“).setValue(referenz.datum); // Für Excel-Formeln // Jetzt können Formeln präzise auf diesen Zeitpunkt referenzieren

Erweiterte Anwendungsfälle für Business Intelligence

BI-Integration: Zeitreihen-Berechnungen

Der wahre Wert der Zeitstempel-Funktion zeigt sich in der Business Intelligence. Hier mein konkretes Beispiel für 8-Wochen-Zeitreihen:

// OfficeScript: Zeitstempel setzen
let referenz = zeitstempel(); workbook.getActiveWorksheet().getRange(„A1“).setValue(referenz.datum); // Versteckte Referenz  // Excel-Formeln können jetzt präzise berechnen: // 8 Wochen zurück: =A1-56 // 8 Wochen voraus: =A1+56 // KPI-Berechnung basierend auf exaktem Zeitpunkt

Performance-Tipp: Einmal aufrufen, überall verwenden

Kritisch für BI: Konsistenter Zeitstempel für alle Berechnungen:

let masterTimestamp = zeitstempel(); // Einmal aufrufen
let worksheet = workbook.getActiveWorksheet();  // Überall denselben Zeitstempel verwenden
worksheet.getRange(„A1“).setValue(„Daten vom “ + masterTimestamp.datum); worksheet.getRange(„Z1“).setValue(masterTimestamp.datum); // BI-Referenz worksheet.getRange(„Z2“).setValue(masterTimestamp.zeit);  // Zeit-Referenz 
// Alle nachgelagerten Berechnungen basieren auf identischem Zeitpunkt

Tipps für den Business-Alltag

  • Power Query Integration: Baue den Zeitstempel direkt in deine Power Query OfficeScripts ein
  • BI-Konsistenz: Verwende immer denselben Zeitstempel für alle Berechnungen eines Durchlaufs
  • Versteckte Referenzen: Platziere Zeitstempel in versteckten Zellen (z.B. Spalte Z) für Formel-Referenzen
  • Nutzer-Transparenz: Zeige Zeitstempel prominent an: „Daten vom 11.05.2026 um 15:30“
  • Copy-Paste-Tauglich: Verwende korrekte OfficeScript-Syntax (getRange statt getCell)
  • Dokumentation: Kommentiere, welche KPIs auf welchen Zeitstempel referenzieren

Fazit

Die Zeitstempel-Funktion hat mein konkretes Problem gelöst: Meine Nutzer wissen jetzt immer, von wann die Power Query-Daten stammen. Keine vergessenen Updates, keine Vertipper, keine Verwirrung mehr.

Die wichtigsten Vorteile aus der Praxis:

  • Automatische Synchronisation zwischen Power Query-Update und Zeitstempel
  • Präzise Zeitreihen-Berechnungen für historische Analysen und Prognosen
  • Vollständige Transparenz für Endnutzer über Datenaktualität
  • Konsistente Referenzpunkte für komplexe KPI-Berechnungen
  • Eliminierung manueller Fehler bei Zeitstempel-Updates

Probiere die Funktion in deinem nächsten Power Query-Projekt aus! Du wirst überrascht sein, wie ein einfacher Zeitstempel deine Datenqualität und Nutzerzufriedenheit verbessert. Das komplette Script findest du als Download-Datei – einfach in dein OfficeScript kopieren und nie wieder manuelle Zeitstempel vergessen.

Viel Erfolg beim Lösen deiner eigenen Power Query-Herausforderungen!

Hier der komplette Code zum Script, zum einfachen herauskopieren und nutzen.

function main(workbook: ExcelScript.Workbook) {
//Hier dein Hauptcode

const stamp = zeitstempel()
/*
mit stamp.datum und stamp.zeit kann man sich nun die Datums und Uhrzeitkomponenten
des Zeitstempels holen
*/

    let referenz = zeitstempel(); workbook.getActiveWorksheet().getRange("Z1").setValue(referenz.datum); 

}
  
function zeitstempel() {
  // Zeitkomponenten generieren     
  const zeitstempel = new Date(); 
  const jahr = zeitstempel.getFullYear();
  const monat = zeitstempel.getMonth() + 1; // Indexbasierte Zählung Januar = 0
  const tag = zeitstempel.getDate();
  const stunde = zeitstempel.getHours();
  const minute = zeitstempel.getMinutes();
  
  // Deutsche Formatierung erstellen  
  let zeitstempel_datum = tag + "." + monat + "." + jahr;
  let zeitstempel_zeit = stunde + ":" + minute;
  
  // Zeitkomponenten zurückgeben
  return {
    datum: zeitstempel_datum,
    zeit: zeitstempel_zeit
  }
}

Martin Reichelt ist Spezialist für Microsoft-Automatisierung und Verfechter der Citizen Developer Bewegung. Bei XelUp zeigt er, wie man das volle Potenzial von Excel ausschöpft und durch Power Automate effiziente Cloud-Workflows schafft, um wertvolle Lebenszeit im Job zurückzugewinnen.

WordPress Cookie Hinweis von Real Cookie Banner