• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Termine in iCal mit Applescript ändern, geht das?

MacPauli

Jonagold
Registriert
09.12.05
Beiträge
22
Hallo,

ich suche als völliger Applescriptlaie ein Applescript, mit dem ich in iCal alle Termine, die unsinnigerweise von 00:00 bis 00:00 Uhr gehen (so verändert iSync leider meine Ganztagstermine, welche ich auf meinem Nokia E61 erstelle), in ein ganztägiges Ereignis verwandeln. Gibt es da ein Script, welches das hinkriegt??

Gruß

MacPauli
 

hubionmac

Tydemans Early Worcester
Registriert
25.06.04
Beiträge
393
Hier eine Mundgerechte Lösung... jedes Event dass genau 24 Stunden dauert wird in einem bestimmte Kalender (wählst Du beim Start aus) in ein ganztägiges Event umgewandelt... falls noch nicht geschehen....
Code:
tell application "iCal"
    --den Kalendar auswählen, in dem gearbeitet werden soll ANFANG
    set callist to {}
    repeat with i from 1 to count of every calendar
        set callist to callist & name of calendar i
    end repeat
    set thecal to (choose from list callist) as text
    if thecal = "false" then
        set atext to ""
    end if
    set ii to 0
    repeat with i in callist
        set ii to ii + 1
        if thecal as text = i as text then
            exit repeat
        end if
    end repeat
    
    set thecal to calendar ii
    --den Kalendar auswählen, in dem gearbeitet werden soll ENDE
    
    tell thecal
        --nun durch jeden Eintrag gehen
        repeat with myevent in every event
            set mystart to start date of myevent
            set myend to end date of myevent
            if (myend - mystart) as integer = 86400 then
                set allday event of myevent to true
            end if
            --dauert dieser 24 Stunden als Ganztags-Event setzten, sofern das noch nicht geschehen ist        
            
        end repeat
    end tell
end tell
 

MacPauli

Jonagold
Registriert
09.12.05
Beiträge
22
Hallo,

super und vielen Dank!! Bin eben erst nach Hause gekommen und kann daher jetzt erst antworten.

Leider gibt es noch ein kleineres Problem. Unsinnigerweise wird ja beispielsweise ein Ganztagesereignis am 28.03.2007 nach dem Sync in iCal übersetzt als Termin am 28.03.2007 von 00:00 bis 00:00 Uhr.

Daher habe ich

" if (myend - mystart) as integer = 86400 then"

in

"if (myend - mystart) as integer = 0 then"

geändert. Aber dann passiert folgendes:

Es entsteht ein Ganztagesereignis "von 28.03.2007 bis 27.03.2007"! Da dies widersinnig ist, wird es dann in iCal erst gar nicht angezeigt. Ändere ich dann per Hand "bis 27.03.2007" in "bis 28.03.2007" um, wird es korrekt als Ganztagesereignis angezeigt.

Erfolgreich ist das Skript auch, wenn ich vor dessen Anwendung per Hand die Uhrzeit der Endzeit verändere, ich also aus 00:00 00:01 Uhr mache und

mit
"if (myend - mystart) as integer = 60 then"

das Skript laufen lasse.

Also wäre eine Lösung, dass das Skript vor der Änderung (set allday event of myevent to true) die Endzeit von 00:00 Uhr auf 00:01 Uhr setzt. (Äh, kann man mir überhaupt noch folgen?????). Habe mit meinen laienhaften Kenntnissen probiert, per Script die Endzeit zu verändern, aber mir fehlt da der passende Befehl bzw. die passende Syntax!

Gruß

MacPauli