1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Termine in iCal mit Applescript ändern, geht das?

Dieses Thema im Forum "AppleScript" wurde erstellt von MacPauli, 26.03.07.

  1. MacPauli

    MacPauli Jonagold

    Dabei seit:
    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
     
  2. hubionmac

    hubionmac Rheinischer Krummstiel

    Dabei seit:
    25.06.04
    Beiträge:
    379
    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
     
  3. MacPauli

    MacPauli Jonagold

    Dabei seit:
    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
     

Diese Seite empfehlen