iCal: Termin per E-Mail eintragen

Dieses Thema im Forum "Scripting und Automatisierung" wurde erstellt von stm, 15.03.2007.

  1. stm

    stm Thread Starter MacUser Mitglied

    Beiträge:
    5
    Zustimmungen:
    0
    MacUser seit:
    15.03.2007
    Hallo zusammen. Ich bin gestern an meinem ersten AppleScript verzweifelt und suche nun hier nach Hilfe. BTW: Als passiver User war ich schon häufiger hier und habe auch Hilfe gefunden :)

    Zur Situation. Ich habe einen Kalender "test" angelegt. Über eine Terminverwaltung im Web wird, wenn ein neuer Termin eingetragen wird, eine Mail an verschiedene Benutzer verschickt (Info über neuen Termin).

    Jetzt würde ich gerne die Termine automatisch in iCal eintragen.

    Die Mails haben den Betreff der Form: neuer Termin eingetragen: 28.11.2007|Titel|Ort

    Titel, Ort usw. funktiniert auch prima, nur mit dem Datum hapert es noch, weil der Termin immer am aktuellen Tag eingetragen wird.

    Die Funktionen "split" und "trim_line" habe ich, der Übersichtlichkeit halber, mal weggelassen...

    Was mache ich Newbee falsch?

    Code:
    tell application "iCal" to get properties of calendar 9
    
    tell application "Mail"
    	-- What must the subject start with? This gets trimmed.
    	set thePrefix to "neuer Termin eingetragen: "
    	-- What calendar will we add the todo to?
    	set theCalendar to "test"
    	
    	set theMessages to (messages of inbox whose read status is false)
    	
    	repeat with mail in theMessages
    		if the subject of the mail begins with thePrefix then
    			set theDescription to the content of the mail
    			set theSubject to my trim_line(the subject of the mail, thePrefix, 0)
    			
    			-- Subject in die 3 teile splitten: Datum|Beschreibung|Ort
    			set CalHelp to my split(theSubject, "|")
    			set meinEreignisTitel to item 2 of CalHelp
    			set meinEreignisLocation to item 3 of CalHelp
    			set theDate to item 1 of CalHelp
    
    			tell application "iCal"
    				tell calendar theCalendar
    					make new event at end with properties {description:theDescription, summary:meinEreignisTitel, location:meinEreignisLocation, start date:theDate, allday event:true}
    				end tell
    			end tell
    			
    			-- can't delete unread messages?
    			set read status of the mail to true
    			delete the mail
    		end if
    	end repeat
    end tell
    Danke schon vorab,
    /stm.
     
  2. chebfarid

    chebfarid MacUser Mitglied

    Beiträge:
    894
    Zustimmungen:
    75
    MacUser seit:
    05.10.2005
    Ciao,

    Wenn Titel und Ort korrekt ausgelesen werden, nehme ich mal an, daß der Handler "split" funktioniert.

    Ich könnte mir vostellen, daß diese Zeile iCal Probleme bereitet:
    PHP:
    set theDate to item 1 of CalHelp
    Höchstwahrscheinlich muß das Datum in die Klasse "date" umgewandelt werden (der Split-Handler reicht es als normalen Textstring an Dein Skript weiter). Versuch's mal mit
    PHP:
    set theDate to date (item 1 of CalHelp)
    oder
    PHP:
    set theDate to item 1 of CalHelp
    set theDate to date theDate
    Frohes skripten
    Farid
     
  3. stm

    stm Thread Starter MacUser Mitglied

    Beiträge:
    5
    Zustimmungen:
    0
    MacUser seit:
    15.03.2007
    Danke für den Hinweis. Leider bringt das - was sinnvoll klingt - die Fehlermeldung: "Mail hat einen Fehler erhalten: date "28.11.2007" kann nicht in Typ reference umgewandelt werden.

    Ich bin ratlos und verstehe diese komische Fehlermeldung leider nicht.

    Sachdienliche Hinweise...?
     
  4. stm

    stm Thread Starter MacUser Mitglied

    Beiträge:
    5
    Zustimmungen:
    0
    MacUser seit:
    15.03.2007
    - gelöscht -
     
    Zuletzt bearbeitet: 15.03.2007
  5. stm

    stm Thread Starter MacUser Mitglied

    Beiträge:
    5
    Zustimmungen:
    0
    MacUser seit:
    15.03.2007
    - gelöscht -
     
    Zuletzt bearbeitet: 15.03.2007
  6. stm

    stm Thread Starter MacUser Mitglied

    Beiträge:
    5
    Zustimmungen:
    0
    MacUser seit:
    15.03.2007
    Kann mir noch jemand erklären, warum meine Antwort nun drei Mal erscheint?
     
  7. chebfarid

    chebfarid MacUser Mitglied

    Beiträge:
    894
    Zustimmungen:
    75
    MacUser seit:
    05.10.2005
    Vielleicht hilft Dir das weiter? :
    PHP:
    set otid to text item delimiters

    set s to 
    "28.11.2007|Titel|Ort"
    set text item delimiters to "|"
    -- ich nehmeauch Dein Handler "Split()" zerpflückt den Startstring mittels text item delimiters...
    set s1 to text item 1 of s
    set theDate to date s1

    set text item delimiters to otid

    -- Probe:
    theDate
    --> date "Mercoledì, 28 novembre 2007 0:00:00"
    Frohes skripten
    Farid
     
Die Seite wird geladen...

Diese Seite empfehlen