iCal: Kalenderwochen als Wochenereignis

Damit werden die Kalenderwochen in einen ausgewählten Kalender eingetragen und zwar als Ganztags-Ereignisse, die die gesamte Woche Andauern:

Update

Nach ein paar Bugs die von Skeeve gefunden wurden und motiviert durch die Antwort von Epocs, habe ich bei Wikipedia mal die Definition von Kalenderwochen per DIN 1355 / ISO 8601 studiert. Ich denke das Skript sollte sich wohl nun an das korrekte Regelwerk halten und lückenlos Kalenderwochen erstellen, auch wenn mal ein Jahres-Wechsel in der Woche liegen sollte.

Code zum markieren einmal anklicken Code im Skript-Editor öffnen

— hubionmac.com 24.10.2010 TESTED USING Mac OS 10.6.4

— Erstellt Kalenderwochen als Ganztagsergeinis/Wochenereignis in iCal

— das ganze per Zählweise nach DIN 1355 / ISO 8601 ;-)

— d.h. Jeden Montag und nur montags beginnt eine neue Kalenderwoche.

— und Die erste Kalenderwoche ist diejenige, die mindestens 4 Tage des neuen Jahres enthält.

set myyear to my getyear()

tell application “iCal” to set icals to name of every calendar whose writable is true

set mycal to choose from list icals

if myyear is not 0 and mycal is not false then

set erste_kw_tag to get_years_first_thursday(myyear) – (3 * days)

tell application “iCal”

tell calendar (mycal as text)

set kwcounter to 0

set kwstart to erste_kw_tag

set kwstop to kwstart + 7 * days

repeat until year of kwstop is (myyear + 1)

set kwcounter to kwcounter + 1

set last_kw to make new event at end of events with properties {summary:”KW ” & kwcounter, start date:kwstart, end date:kwstop, allday event:true}

set kwstart to kwstart + 7 * days

set kwstop to kwstart + 7 * days

end repeat

set lastthuesday to kwstop – 4 * days

if year of lastthuesday is myyear then

set last_kw to make new event at end of events with properties {summary:”KW ” & kwcounter + 1, start date:kwstart, end date:kwstop, allday event:true}

end if

end tell

end tell

end if

on get_years_first_thursday(theyear)

set c to my theyeardate(theyear)

set i to 0

repeat until weekday of c is Thursday

set i to i + 1

set day of c to (day of c) + 1

end repeat

return c

end get_years_first_thursday

on theyeardate(theyear)

set c to current date

set year of c to theyear

set day of c to 1

set month of c to 1

–Since ical acts a bit strange on dates before 10.6

if (characters 1 through 4 of (do shell script “sw_vers -productVersion”) as text) is in {“10.3”, “10.4”, “10.5”} then

set hours of c to 12

else

set hours of c to 0

end if

set minutes of c to 0

set seconds of c to 0

return c

end theyeardate

on getyear()

set myyear to year of (current date)

set myyears to {}

repeat with i from 1 to 10

set myyears to myyears & (myyear – 5 + i)

end repeat

return (choose from list myyears default items myyear) as integer

end getyear

Und hier die KWs als in eine iCal .ics Datei von 2010-2015

One thought on “iCal: Kalenderwochen als Wochenereignis

  1. Didier says:

    Geile Sache!!!

    Vielen Dank für das Skript.

    LG. Didier

Comments are closed.