Applescript oder Automator

Dieses Thema im Forum "Mac" wurde erstellt von Mettgut, 30 April 2008.

  1. Mettgut

    Mettgut Aktives Mitglied

    Registriert seit:
    12 Januar 2002
    Beiträge:
    362
    Hallo,

    ich mache folgendes noch manuell:
    Weil wir auf der Arbeit nichts eigenes installieren dürfen, habe ich ein Outlook-VBA Skript geschrieben, was einen Export meiner Termine als *.ics File erlaubt. Dieses maile ich mir zu.

    Zuhause lösche ich erst alle Termine im Kalender 'Arbeit' und importiere die per mail gekommenen Termine neu. Anschließend synchronisieren und ich habe meine Termine auf dem iPhone.

    So, nun möchte ich dass automatisch beim Erhalt einer solchen Mail importiert wird. Wichtig ist, dass es im Kalender 'Arbeit' landet. Wenn ich das File in der mail anklicke fragt er den Kalender nach.
    Ein Skript zum löschen der alten Termine habe ich bereits.

    Unter Tiger hatte ich es immerhin hinbekommen das File automatisch über eine Regel speichern zu lassen. Unter Leopard funktioniert nicht mal das mehr.

    Hilfe erbeten, auch nur bei Teilstückchen!
    Mettgut
  2. xtraa_

    xtraa_ Serviervorschlag

    Registriert seit:
    28 Februar 2003
    Beiträge:
    14.988
    AW: Applescript oder Automator

    Hi mettgut,

    also wenn Du einen Webserver hast, kannst Du auch

    webcal://deine:url.com/ical/Deinkalender.ics

    abonnieren. Das ginge dann auch direkt im iPhone.

    Wenn Du unbedingt scripten musst bzw willst, hier ist was:

    Code:
    (*
    	Script for automatically extracting calendar items from meeting requests
    	and adding them into iCal.
    *)
    
    
    using terms from application "Mail"
    	
    	on perform mail action with messages theMessages for rule theRule
                  (* path to which to save the tmp file.  This may need to be changed,  AppleScript's handling of paths leaves much to be desired *)
    		set thePath to POSIX file "/tmp/tmp_invite.ics"
    		
    		tell application "Mail"
    			repeat with theMessage in theMessages
    				set theSource to the source of theMessage
    				(* Find the range of the message source that is an ics message 
    				   Note: this works both on messages that detect the .ics attachement,
    						and on crappy Exchange invites that show up as an owa url. *)
    				set vcalBegin to the offset of "BEGIN:VCALENDAR" in theSource
    				set vcalEnd to (the offset of "END:VCALENDAR" in theSource) + (the length of "END:VCALENDAR")
    				(* Get the ics data *)
    				set theInvite to the text vcalBegin thru vcalEnd of theSource
    				
    				(* Only deal with requests *)
    				if (the offset of "METHOD:REQUEST" in theInvite) is equal to 0 then
    					(* do nothing *)
    				else
    					(* write to a temp file *)
    					set fh to open for access thePath with write permission
    					write theInvite to fh as string
    					close access fh
    					
    					(* open in iCal *)
    					tell application "iCal" to open the thePath
    					(* delete the file *)
    					tell application "Finder" to delete the thePath
    					
    				end if
    				
    			end repeat
    		end tell
    	end perform mail action with messages
    end using terms from
  3. Mettgut

    Mettgut Aktives Mitglied

    Registriert seit:
    12 Januar 2002
    Beiträge:
    362
    AW: Applescript oder Automator

    Ich verstehe immer noch nicht, warum das ganze nicht funktioniert, wenn es aus Mail als Regel gestartet wird. Sobald ich es direkt laufen lasse funktioniert es:

    PHP:
    set theOutputFolder to "Macintosh HD:Users:mettgut:Documents:iCal:"

    --comment the first two lines ("using terms…" and "on perform…") and their accompanying "end" statements when testingUncomment them to use this script as a Mail rule function.

    using terms from application "Mail"
        
    on perform mail action with messages theMessages for rule theRule
            
    --display dialog "Could not save "
            
    tell application "Mail"
                
    --comment the following line when running this script as a Mail.app rule function - uncomment it for testing
                
                
    --set theMessages to selection
                
                repeat with thisMessage in theMessages
                    
    --display dialog "Could not save "
                    
    set theAttachments to (every mail attachment of thisMessage)
                    
    repeat with a from 1 to length of theAttachments
                        set theAttachment to item a of theAttachments
                        
    try
                            
    set theAttachmentName to name of theAttachment
                            
                            
                            set theSavePath to theOutputFolder 
    theAttachmentName
                            
    --display dialog theSavePath
                            
    try
                                
    tell application "Finder"
                                    
    delete theSavePath
                                end tell
                            end 
    try
                            
    save theAttachment in theSavePath
                            
                            
                            
                            tell application 
    "iCal" to open the theSavePath
                            
                        end 
    try
                    
    end repeat
                    
                end repeat
            end tell
        end perform mail action with messages
    end using terms from

    2. Problem ist, dass er ja we gesagt den Kalneder abfragt, wo er die Termine eintragen soll. Dieses kann ich irgendwie nicht steuern. Es gehen ja nicht mal Tasteneingaben.

    Gruß
  4. xtraa_

    xtraa_ Serviervorschlag

    Registriert seit:
    28 Februar 2003
    Beiträge:
    14.988
    AW: Applescript oder Automator

    Ok,

    lass uns erstmal das Script perfektionieren. Das es
    nicht als Mail-Regel funzt, ist sekundär, ich glaub
    das bekommen wir noch hin, da gibt es sicher einen
    trick oder wir binden das Script halt mit dem Automator
    ein.

    Du müsstest also folgende Scriptteile noch mit einbinden:

    Dies hier zum evtl. löschen des Inhaltes von Kalender 'Arbeit'

    PHP:
    tell application "iCal"
        
    tell calendar "Arbeit"
            
    delete every event
        end tell
    end tell
    und diesen zum anlegen des neuen:

    PHP:
    set rightcalendar to "Arbeit"
    set eventName to "Heute"
    set EventDescription to "im Büro"
    tell application "iCal"
        
    set targetCal to first calendar whose title is rightcalendar
       make 
    new event at the end of events of targetCal with properties ¬
            
    {summary:eventNamedescription:EventDescription}
    end tell
  5. xtraa_

    xtraa_ Serviervorschlag

    Registriert seit:
    28 Februar 2003
    Beiträge:
    14.988
    AW: Applescript oder Automator

    Alternativ noch ein etwas längeres Script, was ich aus einer
    freeware extrahiert habe. Es macht genau das, was Du eigentlich
    willst.

    Eventuell kannst Du Dir dann auch das exportieren als .ics sparen.

    jede Mail, die mit besagter Regel ankommt, wird automatisch als
    Event oder ToDo in iCal importiert. Du brauchst also keine .ics
    Attachments mehr. :yo