• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung

Applescript für Dienst: Dateien als Email Anhang & Festgelegter Betreff

DaNylz

Gloster
Registriert
10.06.10
Beiträge
63
Hallo zusammen!

Ich habe mit bereits ne Automator Aktion gemacht die Dateien als Email-Anhang hinzufügt und
in den Betreff schreibt "Peter Mustermann sendet die Datei:[Dateiname].jpg"

bildschirmfoto20110318u.jpg


Das Problem ist, dass dieses Script nur bei einer Datei funktioniert...
Führt man den Dienst auf mehrere Dateien aus, fügt er zwar die Dateinamen ein,
jedoch nur die erste in den Mail Anhang...

Ich habe mich gefragt ob das ganze per Applescript geht und es scheitert bei mir schon daran, dass ich nicht weis,

wie man per AS einen Dienst erstellt, der Finder Objekte als Input nimmt um von diesen den Dateinamen in eine Variable zu schreiben
und sie dann als Email-Anhang hinzuzufügen...

Hoffe Ihr könnt mir helfen!

Liebe Grüße

DaNylz
 

fyysh

Schweizer Glockenapfel
Registriert
25.01.10
Beiträge
1.386
Doug Adams hat ein Script, welches das kann. Da kannste abschreiben. ;)


Einfach runterladen, DMG mounten und die enthaltene scpt mit dem Applescript-Editor mounten. Dann siehst du den Code.
 

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.359
Tja ... ehrlich gesagt sollte es so funktionieren.
Ich hätte meinem Verständnis nach zwischen Neue Email und Wert der Variablen abfragen noch Eingabe ignorieren gewählt, aber es sollte auch so, wie du den Ablauf erstellt hast, funktionieren!

Du kannst, um den Dienst mal zu testen, die Aktion "Angegebene Finder-Objekte abfragen" an den Anfang stellen, zwei oder mehr Objekte hinzufügen und dann im Automator laufen lassen. Im Ergebnisfenster der letzten Wert der Variablen abfragen sollten die Objekte dort auftauchen...

- - - - - - - - - - - - - -

Einen Dienst kann man nur mit dem Automator erstellen. Allerdings kann man ja auch ein AppleScript im Automator ausführen.
Lade bei Bedarf mal das von fyysh verlinkte Skript und poste es hier, dann kann man sehen, was angepasst werden muss...

Gruß
 

DaNylz

Gloster
Registriert
10.06.10
Beiträge
63
Tja ... ehrlich gesagt sollte es so funktionieren.
Ich hätte meinem Verständnis nach zwischen Neue Email und Wert der Variablen abfragen noch Eingabe ignorieren gewählt, aber es sollte auch so, wie du den Ablauf erstellt hast, funktionieren!

Du kannst, um den Dienst mal zu testen, die Aktion "Angegebene Finder-Objekte abfragen" an den Anfang stellen, zwei oder mehr Objekte hinzufügen und dann im Automator laufen lassen. Im Ergebnisfenster der letzten Wert der Variablen abfragen sollten die Objekte dort auftauchen...

stimmt das habe ich auch schon ausprobiert, ändert aber nix...

den dienst wie beschrieben getestet habe ich auch, aber es landet immer nur eine datei als anhang in der mail

habe jetzt folgendes fabriziert... das problem ist, dass
1. der komplette Dateipfad im Betreff landet und nicht nur der Dateiname
2. ich nicht weis wie ich mehrere Dateinamen als Input, mit nem Komma im Betreff seperiere
3. die Variablenabfrage für den Anhang nicht klappt (vllt habe ich auch den falschen Anhangsbefehl, habe aber nur den gefunden im Internetz)

hier mein script:
bildschirmfoto20110318u.jpg



hier nochmal der Text zum kopieren:
on run {input}

set file_attachment to input as alias
set Filename to file_attachment as text
set theBody to {return & "Liebe Grüße" & return & return & "Peter Mustermann" & return & "[email protected]" & return & return} as text
set theSubject to {"Peter Mustermann sendet die Datei:" & Filename}

tell application "Mail"

set newMessage to make new outgoing message with properties {subject:theSubject, content:theBody}
tell newMessage
set visible to true
make new attachment with properties {file name:file_attachment} at after the last paragraph
end tell
end tell


return input
end run
 
Zuletzt bearbeitet:

DaNylz

Gloster
Registriert
10.06.10
Beiträge
63
Doug Adams hat ein Script, welches das kann. Da kannste abschreiben. ;)


Einfach runterladen, DMG mounten und die enthaltene scpt mit dem Applescript-Editor mounten. Dann siehst du den Code.

hey das script ist schonmal super, danke!
problem hier, dass ich nicht erkennen kann, wie er die Anhangsvariable (oben als file_attachment; hier this_atch) mit infos füllt,
vllt auch weil ich durch diese parametersachen zu beginn des befehls nicht durchsteige....

bildschirmfoto20110318u.jpg

kann man den befehl nicht entsprechend in mein script aus dem vorherigen script (s.o.) einfügen?
ich habe einfach den verdacht, dass ich die Anhangsvariable falsch fülle oder falsch abfrage...
 
Zuletzt bearbeitet:

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.359
Tja. Eigentlich hätte es mich ja mal interessiert, bei welcher Aktion genau der Ablauf nicht wie gewünscht funktioniert.
Ich gehe davon aus, dass die Objekte der Aktion "Anhänge zur Email..." korrekt übergeben werden, aber diese letzte Aktion bei dir Ärger macht.

Wenn dem so ist, so könnte man dort ansetzen ... aber ich kann ja nur raten.

Dein AppleScript kann so nicht funktionieren, da die übergebenen Variablen in einer Schleife abgearbeitet werden müssen. So wie es im zweiten Skript auch gemacht wird.

Hier ein möglicher Anfang
Code:
on run {input}
set z to {}
repeat with i in input
tell application "Finder"
set x to name of i as string
end tell
set z to z & (x & ", ")
end repeat
set Filename to text 1 thru -3 of (z as string)
	
--usw
end run
 

DaNylz

Gloster
Registriert
10.06.10
Beiträge
63
Tja. Eigentlich hätte es mich ja mal interessiert, bei welcher Aktion genau der Ablauf nicht wie gewünscht funktioniert.
Ich gehe davon aus, dass die Objekte der Aktion "Anhänge zur Email..." korrekt übergeben werden, aber diese letzte Aktion bei dir Ärger macht.

Wenn dem so ist, so könnte man dort ansetzen ... aber ich kann ja nur raten.

Dein AppleScript kann so nicht funktionieren, da die übergebenen Variablen in einer Schleife abgearbeitet werden müssen. So wie es im zweiten Skript auch gemacht wird.

wie gesagt alle aktionen funktionieren, der eingegebene text landet wie gewünscht im betreff fenster und der andere wie gewünscht im text bereich der mail... das klappt appes soweit...
eben nur das einfügen der dateien will nicht

meinst du man könnte da iwie über einen clipboard befehl das ganze über die zwischenablage machen und bräuchte dann keine anhangsvariable?

_________________________________________

wenn ich deinen scriptanfang um "Filename" festzulegen einbaue krieg ich "Fehler in Script"
 

DaNylz

Gloster
Registriert
10.06.10
Beiträge
63
so klappts: anstatt den anhang dirch ne variable reinzuholen einfach per keystroke über die zwischenablage...
aber mit dem filename wie ich die da reinkriege da steige ich nicht durch???

on run {input}


tell application "System Events"
keystroke "c" using command down
end tell

set filename to input as text

tell application "Mail"
set newMessage to make new outgoing message with properties {subject:"Peter Mustermann sendet die Datei(en):" & filename, content: return & return & "Liebe Grüße" & return & return & return & Peter Mustermann" & return & "[email protected]" & return & return}
tell newMessage
set visible to true
end tell
activate
end tell

-- hier der teil um im content an die richtige stelle zu kommen

tell application "System Events"
keystroke tab
keystroke tab
keystroke tab
keystroke tab
keystroke tab
keystroke tab
keystroke tab
keystroke (key code 125)
keystroke (key code 125)
keystroke return
keystroke (key code 125)
keystroke (key code 125)
keystroke (key code 125)
keystroke (key code 125)
keystroke (key code 125)
keystroke (key code 125)
keystroke (key code 125)
keystroke return
keystroke return
keystroke "v" using command down
keystroke (key code 126)
keystroke (key code 126)
keystroke (key code 126)
keystroke (key code 126)
keystroke (key code 126)
keystroke (key code 126)
keystroke (key code 126)
keystroke (key code 126)
keystroke (key code 126)
keystroke (key code 126)

end tell


return input
end run
 

fyysh

Schweizer Glockenapfel
Registriert
25.01.10
Beiträge
1.386
Hi.

Aus Spaß mal gemacht:

Das Script:
Code:
property mailSubjectPrefix : "Peter Mustermann sendet die Datei(en): "
property attachSeparator : "*******"
property attachPrefix : "Anhänge:"

on run {input, parameters}
	
	make_mail_attachment(input)
	
end run

to make_mail_attachment(atch)
	(*
	"Selected Tracks As Mail Attachment" for iTunes
	written by Doug Adams
	[email protected]

	v1.0 july 29 2006
	-- initial release

	Get more free AppleScripts and info on writing your own
	at Doug's AppleScripts for iTunes
	http://www.dougscripts.com/itunes/
	*)
	
	tell application "Mail"
		
		set mailSubject to ""
		
		set new_mess to make new outgoing message
		tell new_mess
			set visible to true
			--set content to (fnoms & return & content)
			set content to (return & attachSeparator & return & attachPrefix & return & return)
			repeat with this_atch in atch
				tell content
					make new attachment with properties {file name:this_atch} at after last paragraph -- at after the last word of the second paragraph
				end tell
				tell application "Finder" to set mailSubject to mailSubject & name of this_atch & space
				
			end repeat
			
			set subject to mailSubjectPrefix & mailSubject
		end tell
		activate
	end tell
end make_mail_attachment


So in den Automator rein:
2011-03-19_1409.png


=> Funktioniert.
1. 2011-03-19_1413.png
2. 2011-03-19_1414.png
 

DaNylz

Gloster
Registriert
10.06.10
Beiträge
63
!!!

hey das klappt ja super... vielen dank!

Die Lösung mit den keystrokes hat auch nicht ganz so ausgereift funktioniert wie deine!!!

ein letzter Punkt:

die Dateinamen landen ja in der Betreffzeile... ne idee, wie ich dazwischen noch ein ", " hinbekomme?

Liebe Grüße und Vielen vielen Dank!

DaNylz

-----

eventuell kann man irgendwie mit Applescript's text item delimiters arbeiten?
blicke da nicht ganz durch...
 
Zuletzt bearbeitet:

fyysh

Schweizer Glockenapfel
Registriert
25.01.10
Beiträge
1.386
Hi,

hier das Script nochmal ein wenig angepasst, damit du das Trennzeichen für die Attachments im Subject frei wählen kannst:
Code:
property mailSubjectPrefix : "Peter Mustermann sendet die Datei(en): "
property subjAttNameSeparator : ", "
property attachSeparator : "*******"
property attachPrefix : "Anhänge:"

on run {input, parameters}
	
	make_mail_attachment(input)
	
end run

to make_mail_attachment(atch)
	(*
	"Selected Tracks As Mail Attachment" for iTunes
	written by Doug Adams
	[email protected]

	v1.0 july 29 2006
	-- initial release

	Get more free AppleScripts and info on writing your own
	at Doug's AppleScripts for iTunes
	http://www.dougscripts.com/itunes/
	*)
	
	tell application "Mail"
		
		set mailSubject to {}
		
		set new_mess to make new outgoing message
		tell new_mess
			set visible to true
			--set content to (fnoms & return & content)
			set content to (return & attachSeparator & return & attachPrefix & return & return)
			repeat with this_atch in atch
				tell content
					make new attachment with properties {file name:this_atch} at after last paragraph -- at after the last word of the second paragraph
				end tell
				tell application "Finder" to set mailSubject to mailSubject & name of this_atch
				
			end repeat
			
			set oTID to AppleScript's text item delimiters
			set AppleScript's text item delimiters to subjAttNameSeparator
			set subject to mailSubjectPrefix & (mailSubject as string)
			set AppleScript's text item delimiters to oTID
			
			
		end tell
		activate
	end tell
end make_mail_attachment


Dabei stellst du den Separator mit der Property "property subjAttNameSeparator" ein.
Diese ist oben auf ", " (Komma + Leerzeichen) gesetzt, d.h. die Attachments müssten so auftauchen: "attach1.ext, attach2.ext, " ... usw