Applescript: .xls Anhang aus Mail lösen und nach .csv konvertieren

Ender

Ender

Aktives Mitglied
Thread Starter
Dabei seit
20.03.2006
Beiträge
499
Reaktionspunkte
31
Hallo zusammen,

ich möchte ein .xls, das in einer Mail steckt, als .csv (Windows-Kommagetrennt) in ein Verzeichnis speichern.

Prinzipiell klappt das schon mit diesem Applescript, das ich im Netz gefunden, angepasst und als Textdatei gespeichert habe::

Code:
--Anhang als tabelle.xls herausloesen

set theOutputFolder to "Powerbook HD:Library:Webserver:Documents:test:"
tell application "Mail"
set theMessage to item 1 of theMessages
set theAttachments to every attachment of content of theMessage
repeat with a from 1 to length of theAttachments
set theAttachment to item a of theAttachments
try
set theAttachmentName to "tabelle.xls"
set theSavePath to theOutputFolder & theAttachmentName
save theAttachment in theSavePath
end try
end repeat
end tell

-- tabelle.xls mit Excel nach tabelle.csv konvertieren

tell application "Microsoft Excel"
activate
open "Powerbook HD:Library:Webserver:Documents:test:tabelle.xls" as text
save in "Powerbook HD:Library:Webserver:Documents:tabelle:tabelle.csv" as CSV Windows file format with overwrite
close active workbook without saving
tell application "Microsoft Excel" to quit
end tell

end perform mail action with messages
end using terms from



Passend dazu habe ich in Mail.app eine Regel "Applescript ausführen" angelegt.

Problem: Es klappt nur vollständig, wenn ich manuell mit der rechten Maustaste auf die Mail klicke und die Regel anwende. Das Script wird zwar auch automatisch gestartet, wenn eine Mail reinkommt, auch Excel geht kurz auf, jedoch hat die .csv dann nur 0 Byte und ist dementsprechend leer... Es scheint, als wenn er nicht das richtige Arbeitsblatt aufmacht, oder etwas ähnlich triviales. Doch warum funktioniert es dann bei der manuellen Durchführung?

Ich frage mich also, was den Unterschied macht zwischen manuellem Regeln anwenden und dem Eintreffen einer Mail. Das ganze läuft auf Mail.app von 10.4.11.

So, Ihr Applescriptfreaks, ich hoffe es gibt Euch noch :)
Danke
Ender
 
Zuletzt bearbeitet:
Hallo,
vorab: ich kann kein Applescript.

In meiner applescriptlichen Einfalt zurückgefragt:
Und wo teilst du in deinem Script der Anwendung Excel.app mit, dass sie die Datei als CSV abspeichern soll? Also dass (wenn man es von Hand täte) die Befehlsfolge Datei > Speichern unter... > Format: {Kommagetrennte Werte|Windows-kommagetrennt|MS-DOS-kommagetrennt} ausgeführt würde? Wie du siehst, gibt's ja in Excel zudem drei CSV-Optionen.

Vielleicht hilft auch:
http://www.microsoft.com/mac/developers/default.mspx
 

Anhänge

  • MSO-AppleScript.png
    MSO-AppleScript.png
    59,8 KB · Aufrufe: 52
In dieser Zeile steht das. Da musste ich eine Weile schmökern, um es in der Microsoft-Applescript Referenz zu finden und umzusetzen:

Code:
save in "Powerbook HD:Library:Webserver:Documents:tabelle.csv" as CSV Windows file format with overwrite

Ich hab den Fehler jetzt auch gefunden. Vermutlich war es die Zeile

Code:
set mailmsgs to selection as list

In der steht ja, das die ausgewählte Mail bearbeitet werden soll. Das klappt natürlich nur, wenn an die Mail manuell anwählt ;-)
Ich habe das Script oben im Eingangsthread jetzt so angepasst, dass alles wie geplant klappt. Bestimmt freut sich mal jemand, der das selbe Problem hat.

Hintergrund: Es ist ziemlich schwierig, mit PHP eine Exceldatei zu importieren, das klappt fast nur mit .csv Dateien. Es gibt zwar irgendwelche Frameworks, an denen bin ich aber ziemlich schnell verzweifelt. Mit dem Applescript umgehe ich das Problem und kann meine Daten ganz problemlos in eine MySQL-Datenbank importieren.
 
Zuletzt bearbeitet:
Zurück
Oben Unten