Backup automatisch starten
Scripte für manuelle Starts lege ich normalerweise in einem Ordner ab (z.B. c:/install/scripts/...). Auf dem Desktop (oder im Startmenü) liegt dann eine Verknüpfung zu diesem Ordner. Ein Doppelklick aufs Ordnersymbol zeigt alle vorhandenen Scripts an; ein weiterer Doppelklick startet das ausgewählte Script (z.B. vorher die externe USB-Platte einschalten...)...
Programme und Scripts lassen sich automatisch starten:
- vor dem beenden von Windows (MMC)
- nach dem starten von Windows (MMC)
- nach dem anmelden eines Benutzers (MMC)
- vor dem abmelden eines Benutzers (MMC)
- zu festgelegten (auch sich wiederholenden) Zeitpunkten (geplante Tasks)
Im folgenden beschrieben die Schritte zum einhängen von Scripts mit der MMC:
Die MMC (Microsoft Management Console) starten:
- Start - Ausführen
- mmc eintragen und mit OK bestätigen
Passendes Snap-In auswählen:
- Datei - SnapIn hinzufügen oder entfernen
- hinzufügen
- Eigenständig - Hinzufügen
- Gruppenrichtlinie - Hinzufügen (i.d.R. Lokaler Computer)
- Fertig stellen
- Schliessen (Fenster Eigenständiges Snap-In...)
- Ok (Fenster Snap-In hinzufügen/entfernen)
Vorher nachdenken: Wann sollen die Scripte ausgeführt werden:
beim Rechnerstart/Shutdown
- Richtlinien für Lokaler Computer - Computerkonfiguration - Windows-Einstellungen - Skripte (Start/Herunterfahren)
und/oder:
beim anmelden/abmelden Benutzer
- Richtlinien für Lokaler Computer - Benutzerkonfiguration - Windows-Einstellungen - Skripte (Anmelden/Abmelden)
Bestimmte Benutzer unterscheiden könnte man dann im Script (Variable USERNAME und USERPROFILE usw.)...
Je nach dem hat man jetzt im Fenster rechts zwei Einträge zur Auswahl:
bzw.
Scripte hinterlegen
- Doppelklick auf das gewünschte Ereignis öffnet ein Eigenschaftsfenster
- Via Hinzufügen kann man jetzt das passende Script auswählen (Scriptname, ggf. via Durchsuchen)
- Mit dem Feld Scriptparameter kann man dem Script Schalter/Variable mitgeben...
Anschliessend weitere Scripte ergänzen und alles bestätigen - fertig!
03.09.2007 ↸
download
Die Backuptools
- müssen auf die jeweilige Situation (Verzeichnispfade) angepasst werden
- sind in das "Wurzelverzeichnis" der jeweiligen Verzeichnisstruktur zu kopieren
- sind prinzipiell universell (für Bildersammlung, mp3-Sammlung usw.) verwendbar.
- benutzen nur im Windows-Standard vorhandene Tools (wie DIR, XCOPY)
- Die Zielverzeichnisse sind je nach Script vorher anzulegen.
Folgende Scripts (Windows *.cmd-Files) sind im Paket enthalten:
- hilfe.cmd listet die Scripts und zeigt den jeweiligen Zweck kurz an
- neue_liste.cmd erzeugt eine neue Datei LISTE.TXT (Gesamtliste) aller Dateien einschl. der Unterverzeichnisse
- suche.cmd zeigt alle Dateien mit :muster: im Dateinamen (das Suchmuster wird vom Scripts abgefragt)
- neue.cmd listet nur neue ungesicherte Dateien (Archivbit gesetzt)
- neuzugaenge.cmd listet alle Dateien ab einem einzugebendem Datum
- neue_brennen.cmd kopiert nur neue Dateien (Archivbit) an einen Sicherungsort (z.B. zum brennen in ein temporäres Verzeichnis oder als Backup auf zweite Festplatte) und löscht anschliessend das Archivbit
- neue_kopieren.cmd kopiert Dateien auf einen Mirror (Spiegel) - das Archivbit bleibt wie es ist
- datumscopy.cmd kopiert alle Dateien, geändert ab einem einzugebendem Datum - das Archivbit bleibt wie es ist (bezieht sich auf das letzte Änderungsdatum der Datei). Datum wird abgefragt.
Spezialscript - besonders in Verbindung mit Winamp Playlists:
- copym3u.cmd kopiert Dateien die in einer vorhandenen Datei gelistet sind (z.B. einer Winamp Playliste...) mit oder ohne Unterverzeichnisstruktur (z.B. zum brennen der Dateiauswahlliste oder zum kopieren auf einen MP3-Stick) in ein zweites Verzeichnis (zweite Harddisk...).
Ohne die Unterverzeichnisstruktur zu erhalten: Da manche MP3-Sticks Unterverzeichnisse nicht unterstützen (alle Dateien müssen sich im Wurzelverzeichnis befinden) kann man diese Variante einsetzen. Alle Dateien werden dann in
ein Verzeichnis zusammenkopiert. Diese Variante ist auch dazu geeignet, um z.B. das brennen einer Audio-CD anhand einer Playlist vorzubereiten
(auch hier möchte man alle Tracks in einem Verzeichnis zusammenstellen).
Ohne die Unterverzeichnisstruktur zu erhalten, aber MIT beibehalten der Reihenfolge der Playlist: Die Dateien werden zwar nach wie vor alle in EIN Verzeichnis geschrieben, aber der Name wird vorne durch eine fortlaufende Nummer ergänzt (Präfix) - dadurch bleibt die durch die Playlist (...) vorgegebene Reihenfolge erhalten!
Mit erhalten der Unterverzeichnisstruktur: Z.B. zum erzeugen von MP3-Daten-CDs für den DVD-Player.
Robocopy (c) Microsoft
So praktisch diese winzigen Scripts auch sein mögen
- es gibt immer noch etwas besseres. Für reine Backupaktivitäten und speziell mirroring von Files seht Euch unbedingt auch
robocopy an!
Zumindest die Scripts
neue_brennen.cmd und
neue_kopieren.cmd sind mit robocopy wesentlich flexibler zu handeln...
29.04.2008 ↸
http://jfilesync.sourceforge.net/
siehe auch die Backuptools...
JFileSync - Java File Synchronization
Ein Opensource Tool (Java - also eine JRE erforderlich) zum synchronisieren von Verzeichnissen.
Dieses Programm arbeitet mit (u.U. mehreren) einfach zu erstellenden Profilen und einer grafischen Oberfläche. Es arbeitet aber auch mit diversen Programmzeilenparametern, so dass man es auch bei angelegtem Profil (zeitgesteuert) per Script starten kann.
29.04.2008 ↸
Robocopy
siehe auch die Backuptools...
Robocopy
(c) Microsoft bedeutet "robust file copy utility" und ist in den Windows Server 2003 Resource Kit Tools enthalten. Das Kit kann man bei Microsoft downloaden und ist
installierbar unter Windows 2003 oder XP.
Benutzbar sind die meisten Tools aber auch für ältere Betriebssystemversionen...
Eine Übersicht über
alle Resourcekits bekommt man via
http://www.microsoft.com/windows/reskits/default.asp
- dann dort dem Link zu ''Windows Server 2003 Resource Kit Tools'' folgen und die Installationsdatei (nur englisch) downloaden...
(Nur) ''einige'' Vorteile gegenüber XCOPY:
- echtes mirroring möglich (d.h. im Quellverzeichnis nicht mehr vorhandene Dateien werden auch im Zielbereich automatisch gelöscht - wenn man will)
- Auswahl von Dateien nicht nur über Name, Änderungsdatum oder das Archivbit - robocopy führt eigene "Klassen" von Dateien ein, die gesammelt bearbeitbar sind
- Transport nur von Berechtigungen oder Attributen
- Monitoringfunktion für Verzeichnisse (d.h. ein robocopy-Prozess bleibt aktiv und wird sofort (...) bei Änderungen an einem Verzeichnis aktiv - z.B. für ganz zeitnahes mirroring)
- Jobunterstützung und ausführliche, anpassbare Protokolle
- usw. usw.
Und die Berechtigungen nicht vergessen...
"...By default, an object inherits permissions from its parent object, either at the time of creation or when it is copied or moved to its parent folder. The only exception to this rule occurs when you move an object to a different folder on the same volume. In this case, the original permissions are retained..."
Vista-Hinweis
- in Vista sollte man - insbesondere beim kopieren von User Accounts - den Parameter /xj verwenden (d.h. keine Junctions mitkopieren)
Grund:
Vista legt per default in den Benutzerdateien eine Junction an, die auf ihren Parent Folder verweist (d.h. es entsteht ein Loop).
Robocopy wiederum (ohne Parameter /xj) folgt (endlos) dieser Junction (weil wohl keine Prüfung auf Rekursion=Wiederholung erfolgt) und erzeugt dadurch Dateien mit zu langen Namen (die man auch nicht so einfach wieder los wird, weil der Pfadname zu lang wird - geschweige denn (im Explorer) sieht wenn man die Berechtigungen mitgenommen hat - partitionieren und formatieren mal ausgenommen ;))
11.07.2008 ↸
download
VBA Makro (Visual Basic for Applications) für Outlook 2003 zum extrahieren (speichern Anhänge als Datei) von Anhängen eines MailItem ins Filesystem (Laufwerk Pfad Dateiname). Die Anhänge werden anschliessend im Outlook (Exchange) in der Mail gelöscht - in einem neuen Anhang zur Mail wird aber ein (anklickbarer) Verweis mit dem Dateinamen hinterlegt - der Body (als Nur-Text) und die wesentlichen Header werden ebenfalls dokumentiert
Installation
- in Outlook 2003 Alt+F11 (VBA Editor)
- Textdownload (Sub... End Sub) z.B. in Modul1 kopieren (ggf. Doppelklick links auf Name, rechts reinkopieren)
- den Pfadnamen anpassen (und was sonst nicht gefällt, suche hierzu alle Kommentarzeilen mit "§§§" im Source) und speichern
- Makro am besten in eine Symbolleiste plazieren (sonst jeweils Alt+F8)
Den Pfadnamen sucht man im Makro nach folgender Zeile:
'Hier wird im Dialog nach dem Ort gefragt wo gespeichert werden soll - muss schon existieren
Wenn man diesen Pfad ohnehin nie ändert, ersetze man die ganze Folgezeile durch eine simple
Zuweisung anstelle jedesmal eine Dialogbox aufpoppen zu lassen, z.B.:
myOrt = "d:/user/juergen/Archive/Outlook/Anlagen/"
Anwendung
- Mails mit/ohne Anhänge markieren
- Makro in Symbolleiste anklicken (bzw. via Alt+F8 starten wenn man Symbolleiste nicht angepasst hat)
- Sicherheitsmeldungen bestätigen (je nach Anzahl Mails 1 Minute oder mehr erlauben)
Arbeitsweise
- bearbeitet alle in Outlook markierten Mails (die Anlagen enthalten)
- Anlagen werden ins Filesystem extrahiert und in Outlook gelöscht
- es wird eine neue Anlage(!) zur Mail ergänzt. Diese enthält (einfaches HTML-Dokument) die wichtigsten Infos zur Mail (From, To, Cc, Subject, Größe gesamt, gesendet/empfangen, Body als Nur-Text) sowie anklickbare Links zu den extrahierten Anlagen
Zumindest für Nur-Text-Mails könnte man die Hinweise zu extrahierten Anlagen auch einfach im Body der Ursprungsmail hinterlegen (einfach myItem.Body ergänzen). Für HTML/RichText-Mails ist mir das nicht gelungen (die Felder lassen sich zwar ändern, aber die Msg konnte nicht mehr gespeichert werden (als zur Nur-Text-Mail umgewandelte Nachricht schon). Liegt an der "weak Object Reference" für myItem vermute ich. Wahrscheinlich wäre nur eine Kleinigkeit zu ändern gewesen - jetzt ist es mittels externer Anlage gelöst...
Wen die Sicherheitsabfrage des Makros nervt
- Man kann seine eigenen VBA Makros signieren. Dazu muss man zunächst ein passendes Zertifikat haben (oder lokal selbst erzeugen) und damit in der VBA-Entwicklungsumgebung das Makro signieren. Nach jeder Änderung am Source ggf. wieder neu... Auf anderen Rechnern muss man die ganze Prozedur ebenfalls wiederholen...
- bessere Lösung: Als Add-In programmieren, z.B. in C++ - da gibts dann keine Sicherheitsabfragen mehr (warum auch immer)
Hinweise
- normalerweise werden die Anhänge mit ihrem Originalnamen (Mini-Prüfung auf "schädliche" Zeichen anhand Blacklist) und einem Datumspräfix (Entstehungs-Timestamp der Mail) im Verzeichnis myOrt abgelegt: ''laufwerk:/pfad/''jjjjmmtt_hhmmss-orginalname.endung
- u.U. legt man eher je Jahr ein eigenes Verzeichnis an (oder je Sender oder je Anlagentyp (Dateiendung) oder...)
- evtl. filtert man auch via Anlagengröße (kleine Anlagen bleiben im Mailstorage, nur große Files werden extrahiert)...
- Probleme gibts bei HTML-Mails (eingebundene aber jetzt extrahierte Bilder werden anschliessend nicht mehr dargestellt!)
- am Anfang des Makros steht noch ungefähr drin, wie man es als Script für die Outlook Regeln einsetzen kann (Extras - Regeln und Benachrichtigungen). Da nervt dann aber die Sicherheitsabfrage (d.h. man müsste signieren) - und ich habe es auch nur als Nur-Client-Regel hinbekommen (was im Normalfall ausreichen sollte)...
- natürlich ist das Verzeichnis mit den Dateien genausogut zu sichern wie der Mailstorage (und umgekehrt)...
14.10.2008 ↸
Outlook Kalender Termine auf Webserver veroeffentlichen
download
Termine (inclusive Serientermine) mittels voll automatisierbarem VBscript aus einem Outlook (2003) Kalender extrahieren und in CSV-Datei zur Weiterbearbeitung bereitstellen und veröffentlichen dieser Daten als navigierbarer Monatskalender auf einem Webserver
Automizable Visual Basic script to extract outlook 2003 appointment items (personal calendar) into CSV-file - publishing this data in an web based calendar. Includes (nearly) all possible recurrence types of appointmentItems with handling exceptions too (deleted or modified instances of recurrence appointment items) (Sorry - further documentation in german language only!)...
update 05/2012:
- funktioniert auch in Outlook 2010 noch
- für die Gegenrichtung interessant (Ermittlung für beliebige Jahre / Import von Feiertagen, Mondphasen, Dämmerungszeiten, Sonnenaufgangszeiten, Sonnenuntergangszeiten in Outlook) https://galupki.de/kalender/sunmoon.php
Todo:
---
Wieso eigentlich?
- Webzugriff von überall her auf die eigenen aktuellen Outlookdaten ohne andere Tools / Exchange (z.B. Stichwort ''Outlook Web Access'' (OWA))
- Voll automatisiertes veröffentlichen von Outlook-Terminen auf einen Webspace
- Einige Terminarten (z.B. Ostern, abhängig von Ostern) kennt Outlook nicht (kann man einzeln über Dateien importieren, klar)
- Jubiläumsangaben (z.B. welches Jubiläum bei Hochzeitstag, Alter bei Geburtstagen) zeigt Outlook nicht an
- Ich finde die normale Outlook-Monatsansicht des Kalenders recht unübersichtlich
- Unterwegs (ohne PDA für ActiveSync oder Outlook-Web-Zugriff z.B. via Exchange) können Termine (vor-)erfasst - und später durch einen einfachen Klick ins Outlook \"vor Ort\" übernommen werden
Den Web-Monatskalender kann man prima mittels activeDesktop(?) in jeweils aktueller Form angezeigen lassen (Desktop-Hintergrund). Bei der Suche nach fertigen OpenSource Scripts zum exportieren haperte es immer an der ein- oder anderen Stelle. Insbesondere die Serientermine werden da - selbst bei HowTo-Artikeln auf MS-Webseiten - recht stiefmütterlich behandelt (entweder wurden nur ganz simple Serientermine - z.B. jährliche Wiederholungen - wenn überhaupt - mit extrahiert, oder die Scripte agierten schlicht fehlerhaft
Beispielscript aus MS Technet - Retrieving a List of Recurring Appointments from Microsoft Outlook).
Prinzipielle Funktionsweise
- alle Termine des persönlichen Outlookkalenders werden mittels VBscript in eine Datei extrahiert
- dieser Roh-Datenextrakt wird auf einen Webspace transportiert
- umsetzen des Datenextraktes mit einem php-Script, dabei Selektionen und Abgleich mit webbasierter Datenquelle möglich
- Visualisierung der Termindaten (notwendig hierzu zusätzlich: die Kalenderbibliotheken Beispiel Terminkalenderanzeige)
Features des Datenextrakt-Scripts aus Outlook mit VBscript (Visual Basic Script)
- realisiert durch ein VBscript / Windows Scripting Host 5.6 (getestet mit WinXP SP2, Outlook 2003)
- es werden keine sicherheitskritischen Daten (im Sinne von Outlook-Schutzfunktionen, z.B. Body der Termine, Meetingpartner bei Besprechungen) ermittelt / gezogen, damit keine Sicherheitsnachfrage ausgelöst wird (würde dann alternativ weitergehende Techniken erfordern um trotzdem eine Automatisierung des gesamten Prozesses zu ermöglichen)
- es werden grundsätzlich alle gespeicherten Termine (auch Serientermine via GetRecurrencePattern) extrahiert
- es werden je Termin folgende Felder zum AppointmentItem extrahiert, nämlich: EntryId, Subject, Location, Start, End, AllDayEvent, Duration, ReminderMinutes, Categories, Importance, MeetingStatus, ResponseStatus, Sensitivity, LastModificationTime sowie bei Terminserien: Ausnahmen zu Serienterminen (Exceptions), StartSerie, AllDayEvent_Time, EndSerie, Type, Monat_Interval, Day_Instanz, DayOfWeekMask
- das Script erzeugt zwei Dateien: Eine Roh-Datendatei zur Weiterbearbeitung mit speziellen php-Scripten, sowie eine einfach aufgebaute Datei, in der z.B. alle Serientermine bereits tagesgenau ermittelt wurden (Vorjahr, aktuelles Jahr, nächstes Jahr), also eine recht universell verwendbare Terminliste
- weitergehende Dokumentation z.B. zur Definition der Serientermine und der Ausnahmen ist im Script selbst vorhanden
Features bei der Umsetzung des Datenextraktes aus Outlook mit dem php-Script
- liest die o.a. Roh-Datendatei ein und setzt diese um in das für meine Kalenderbibliotheken/-scripte verständliche Format
- Termine im Roh-Datenextrakt werden ignoriert, wenn sie bereits in einer anderen, vorhandenen Termindatei (z.B.: Feiertage im WikiKalender, die sowieso angezeigt werden) enthalten sind. Ggf. sollten diese Termine im WikiKalender aber mit einem Kennzeichen ->OL! im Notizenfeld versehen werden (s. Doku im Script selbst), damit man derartige Termine nicht verwechselt mit online über die Weboberfläche erfassten Terminen
- wurden online im Web neue Termine in die Termindatei erfasst, verbleiben diese so lange im Datenbestand, bis sie irgendwann mal auch in den Outlook-Roh-Daten auftauchen - oder manuell wieder gelöscht werden. Optisch kann man die Termine wie folgt unterscheiden: =manuell erfasster Termin ohne Entsprechung im Outlook, =aus Outlook übernommener Termin. Durch anklicken dieser Symbole im Monatskalender kann man übrigens derartige Termine schnell ins Outlook importieren (mittels dieser Funktionalität kann man unterwegs - bzw. wenn man mal keinen Zugriff auf den Rechner mit Outlook hat - Termine vorerfassen).
- die Kategorien Jahrestag, Jubiläum sollten im Outlook in die Hauptkategorienliste aufgenommen werden, oder man kann Jubiläen/Jahrestage durch einen * an 1.er Stelle des Termin-Subjects kennzeichnen. Das bewirkt, dass bei der Anzeige von so gekennzeichneten Terminen in Klammern jeweils die abgelaufene Jahreszahl (z.B. bei Geburtstagen das Alter) ausgegeben wird
- Wenn gewünscht Definition einer Kategorie / Sensitivity (z.B. Haken bei Privat) im Outlook, für eine spezifische Selektion der Outlook-Roh-Datensätze (d.h.: Es werden nur Datensätze übernommen, die mit einer ganz bestimmten Kategorie - oder die z.B. als privat gekennzeichnet sind). Dasselbe gilt für auszuschliessende Datensätze (über ein weiteres Kategorie- oder Sensitivity-Attribut) (Dadurch kann man ganz gezielt Termine von einer Webveröffentlichung ausschliessen - oder umgekehrt eben genau nur Termine ins Web stellen, die durch eine spezielle Kategorie (z.B. Webkalender) - gekennzeichnet sind!)
Beispiel zur vollständigen Automatisierung der Vorgänge
- Rechner auf dem Outlook und der Windows Scripting Host läuft (z.B. ein WinXP mit SP2)
- das VBScript auf dem Rechner mit lokalem Outlookprofil ablegen
- man besorgt sich z.B. WGET und WPUT für Windows (Wput is written by Hagen Fritsch, Wget setze ich mal als bekannt genug voraus)...
- man installiert die Kalenderbibliothek (und meinetwegen den Wiki auf einem Webserver)
- das phpScript an geeigneter Stelle auf dem Webserver ablegen
- über Geplante Tasks in Windows ruft man ein Batchfile in gewünschter Häufigkeit auf - alternativ startet man das Batchfile nur bei Bedarf (oder automatisch via Autostart-Ordner bei der Anmeldung in Windows oder beim beenden von Windows (geht im Gruppenrichtlinieneditor))
...das
Batchfile enthält z.B.:
(1) cscript vbs_outlook_terminliste.vbs
(2) c:/proginst/wput/wput -a wputlog.txt -u -B Outlook_Termin_Definitionen.csv
ftp://username:passwort@ftp.irgendeine-domain.de
(3) c:/proginst/wget/wget -b -r -a wgetlog.txt -t 1 -T 30 --dns-cache=off --cache=off
http://irgendeine-domain.de/somewhere/outlookkalender.php
(1) VBscript extrahiert aus den lokalen Outlookdaten den Inhalt des Ordners Kalender in eine CSVDatei
(2) WPUT transportiert die Datei mit FTP an passende Stelle auf dem Webserver - ich empfehle den UploadManager oder - besser vielleicht - ein hierfür speziell anzulegendes Incoming-Verzeichnis oder ein /tmp-Verzeichnis
(3) WGET triggert einfach nur das Script, dass die Daten auf dem Webserver passend umsetzt, man könnte auch einen cronjob o.ä. aufsetzen
Insbesondere für das WPUT bietet sich evtl. im Einzelfall eine sicherere Alternative an, bei der man z.B. eine verschlüsselte / gesicherte Verbindung nutzt und nicht das normale FTP-Protokoll...
Modifikationen an den bisherigen Kalenderbibliotheken
Tja, das Downloadarchiv oben ist kein \"einsatzbereites\" Paket! Wenn man schon einen lauffähigen Kalender (evtl. sogar mitsamt Wiki) von mir hat, sollte es reichen, die Dateien aus dem Archiv zu extrahieren und auf dem Webspace zu ersetzen (Anpassungen und Einstellungen nicht vergessen...) bzw. hinzuzufügen. Allen Anderen wünsche ich viel Spaß beim knobeln :->
- neue Images in /images der Kalenderbibliothek
- neue Felder an bestehende Termindateien anhängen (17: Notizen, 18: Last Modifification Date)
- neue feiertage.class.php (neue Datenfelder)
- neue kalender.csv.html (neue Datenfelder)
- neue functionscsvedit.php (neue Datenfelder setzen) des Wikis
- neue monatsblatt.php (Auswertung neuer Datenfelder)
- das phpScript vcalendar.php (download eines Termins im vCalendar-Format passend für Direkt-Import nach Outlook 2003)
- ...irgendwelche im Zweifel undokumentierten (sorry) Einzelheiten in den diversen Scriptfiles, die ich im Laufe der letzten Jahre geändert habe...
Um den Änderungsaufwand an alten Scripten zu minimieren, ist am alten CSV-Dateiformat wenig geändert, aber ich habe zwei neue Felder angehangen. Das erste - ein
Notizenfeld - davon nimmt Daten auf, die bisher so nicht vorgesehen waren (Kategorien, Angaben zu Sensitivity u.a. - siehe Scripte! - aus Outlook), das letzte Feld enthält jetzt das
Last Modification Date des Terminsatzes). Übrigens: Location, Uhrzeiten und ggf. der Besprechungsstatus von Outlook-Meetings landen einfach im Subject der Termine...
Neuentwicklungen
- das VBscript vbs_outlook_terminliste.vbs (extrahieren)
- das phpScript outlookkalender.php (umsetzen)
Tipps
- ältere KalenderDateien (CSVDateien), z.B. der WikiKalender müssen um neue Felder ergänzt werden. Am besten über den UploadManager downloaden, mit Excel die Überschriftszeile um neue Überschriften ergänzen, wieder als CSVDatei speichern, im UploadManager wieder hochladen (Feld17: notiz, Feld18: lastmdate)
- D.h. die komplette Feldliste besteht jetzt aus: Feiertag;Typ;anznr;vontag;vonmonat;vonjahr;bistag;bismonat;bisjahr;wiederholung;differenz;ausnahme;layout;frei;regional;nottage;quit;notizen;lastmoddate
- alle Termine des WikiKalender - die auch im Outlook schon definiert sind - sollten im WikiKalender im neuen Feld 17 (interne Notizen) durch ->OL! gekennzeichnet werden, ausserdem sollten die Subjects übereinstimmen, (nur) darüber erfolgt die Prüfung gegen ein anderes Kalenderfile und das autom. entfernen der Sätze aus den zu übernehmenden Outlook-Rohdaten. Eleganter ist es u.U. eine eigene Kategorie im Outlook zu definieren und alle diejenigen Termine zu kennzeichnen, die nicht übernommen werden sollen (diese Kategorie dann im php-Script eintragen bei exclude_category). Eine weitere Möglichkeit, wenn man eh schon alle Termine im Outlook hat: Im WikiKalender einfach die doppelten Termine weglöschen (aber dann funktionieren z.B. die Datumsberechnungen für Jubiläen ja nicht mehr...)
- Termine (bisher nur) im Webkalender durch anklicken des Symbols nach Outlook übernehmen (geht leider derzeit nur einzeln) - beim nächsten Abgleich sollten die dann mit etwas Glück automatisch gelöscht werden, sofern sie im Outlook richtig gelandet sind
- die vorliegenden Scripte befinden sich im Beta-Stadium und sind an der ein- oder anderen Stelle sicher noch nicht ''geschmeidig'' genug (und kommen evtl. auch nie darüber hinaus, klar sollte sein: Ich fühle mich nicht verpflichtet, irgendwelchen Support oder weitere Erklärungen zu liefern
ergänzende Infos
Aus der Microsoft Outlook (c) - Onlinehilfe entnommen: Ein
Outlook recurrence AppointmentItem (Serientermin) definiert sich über folgende Eigenschaften:
'===========================================================================
'RecurrenceTyp Eigenschaften Beispiel
'===========================================================================
'0 olRecursDaily Interval Alle N Tage
' DayOfWeekMask Jeden Dienstag, Mittwoch und Donnerstag
'
'2 olRecursMonthly Interval Alle N Monate
' DayOfMonth Der N-te Tag im Monat
'
'3 olRecursMonthNth Interval Alle N Monate
' Instance Der N-te Dienstag
' DayOfWeekMask Jeden Dienstag und Mittwoch
'
'1 olRecursWeekly Interval Alle N Wochen
' DayOfWeekMask Jeden Dienstag, Mittwoch und Donnerstag
'
'5 olRecursYearly DayOfMonth Der N-te Tag im Monat
' MonthOfYear Februar
'
'6 olRecursYearNth Instance Der N-te Dienstag
' DayOfWeekMask Dienstag, Mittwoch, Donnerstag
' MonthOfYear Februar
'===========================================================================
'Legende:
'Instance 1-4(5), 6=Letzter
'DayOfWeekMask Or 1=So, 2=Mo, 4=Di, 8=Mi, 16=Do, 32=Fr, 64=Sa
'DayOfMonth 1-31
'MonthOfYear 1-12
'NoEndDate true/false
'PatternStartDate Datum
'PatternEndDate Datum oder...
'Occurrences ...Anzahl von Wiederholungen
'===========================================================================
...setzt mein Script um in eine für die php-Scripte / Kalenderlib voradaptierte Form (weil sich jetzt die meisten fragen werden wo denn hier bitteschön die/eine Verbesserung gegenüber dem Outlook-Datenmodell vorliegt)...
'Minidoku
'Subject Betreff
'Location Ort
'Start Beginndatum und ggf. (nicht immer!) Uhrzeit tt.mm.jjjj hh:mm - betrifft auch alle anderen DatFelder
'End Endedatum und ggf. Uhrzeit - der 31.12.4500 23:59:00 scheint das \"Highdate\" zu sein (=ohne Ende)
'AllDayEvent AllDayEvent (ganztägig) oder leer
'Duration Dauer in Minuten
'ReminderMinutes Erinnern x Minuten vor dem Termin
'Categories Kategorien, getrennt durch Komma(!)
'Importance Wichtigkeit/Prio, sofern abweichend von Normal
'MeetingStatus Status des Meetings
'ResponseStatus Antworten auf Meeting-Anfrage
'Sensitivity Vertraulichkeit (z.B. \"Privat\"-Schalter)
'LastModificationTime zuletzt geändert am...
'Serie S, wenn Serientermin, genau wie alle folgenden Felder nur für Terminserien relevant seind:
'Ausnahmen zu/von einer Serie (gelöscht oder geändert) nach folgendem Schema:
'Trenn1 ^ trennt einzelne Ausnahmeregeln einer Serie
'Trenn2 ° trennt die Felder einer Ausnahme
'isDeleted°21.12.2006^... an diesem Tag findet die Terminserie nicht statt
'isModified°Datum°Start°End°Duration°AllDayEvent°Subject°Location^ ... an diesem Tag ist etwas anders
'StartSerie Startdatum der Terminserie
'AllDayEvent_Time AllDayEvent oder Startzeit
'EndSerie Endedatum der Terminserie
'Type Typ der Wiederholung: DAILY PERIOD WEEKLY MONTHLY MONTHLYnTH YEARLY YEARLYnTH
'Monat_Interval Monat oder Intervall - Tage Interval Interval Interval Monat Monat
'Day_Instanz Tag oder Instanznummer - - - Tag 1-4/L (Wo) Tag 1-4/L (Wo)
'DayOfWeekMask Maske betroffener Wochentage - - Maske - Maske - Maske
'Interval: Gibt das regelmäßige Intervall an, z.B. bei Wochenterminen ist 1=jede Woche, 2=alle zwei Wochen...
'1-4/L (Wo): Gibt bezogen auf den Wochentag die n.te Woche im Monat an (L=letzte)
'Maske: Siebenstelliges Feld (Montag-Sonntag), \"MDMDF--\" z.B. wäre Montags-Freitags, \"---D---\" wäre Donnerstags...
'isModified: Beachten, dass auch andere Felder geändert sein könnten (z.B. Meeting..., Categories...)
...diverse weitere Infos finden sich im
Quelltext der Scripte, die im übrigen natürlich
vor erstem Einsatz angepasst werden müssen (Pfade, Dateinamen etc.).
Wie man sieht, habe ich beim Entwurf nicht ''aufs Bit geschaut'' - natürlich kann man da einiges optimieren (ist bei einer geringen Anzahl an Terminen aber nicht wirklich relevant)...
13.12.2020 ↸