Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Software>AppleScript für Ordneraktion gesucht

AppleScript für Ordneraktion gesucht

wurzelmac23.04.1309:30
Ist es möglich, einen Ordner wie folgt zu überwachen:

Wenn die Datei "IMG_0002.JPG" im Ordner "xy" hinzugefügt wird, sende eine eMail an "xy@mac.com". Das ganze *sollte* ohne eMail Client funktionieren - geht das überhaupt?

(_mäuschen... )

Cheers,
wurzelmac
0

Kommentare

Lyhoo
Lyhoo23.04.1311:11
on adding folder items to this_folder after receiving added_items
    try
        tell application "Finder"
            repeat with eineDatei in added_items
                if name of eineDatei is "IMG_0002.JPG" then my mailSenden()
            end repeat
        end tell
    end try
end adding folder items to


on mailSenden()
    tell application "Mail"
        set mailEmpf to "123@abc.de"
        set NeueMail to make outgoing message at end of outgoing messages
        tell NeueMail
            make new to recipient at end of to recipients with properties {address:mailEmpf}
            set subject of NeueMail to "Hier Betreff eingeben"
            set content of NeueMail to "Hier Text eingeben"
            send NeueMail
        end tell
    end tell
end mailSenden

Dieses Script sendet mit Client (Mail).

Es sollten der Empfänger, Betreff, Mailtext und Dateiname angepasst werden.

Das Script nach 'Library / Scripts / Folder Action Scripts' sichern. Dann Rechtsklick auf den zu überwachenden Ordner: 'Dienste: Ordneraktionen konfigurieren...'
0
Lyhoo
Lyhoo23.04.1311:19
Wenn es unbedingt ohne Client sein soll: Im Terminal 'man mail' eingeben, lesen und ein passendes Shell Script basteln. Das ist aber nicht meine Baustelle
0
wurzelmac23.04.1312:13
Besten Dank!
0
wurzelmac23.04.1312:39
Eine Frage noch: Was muss ich tun, damit Mail nach dem Senden wieder beendet wird?
0
Lyhoo
Lyhoo23.04.1312:42
on adding folder items to this_folder after receiving added_items
try
tell application "Finder"
repeat with eineDatei in added_items
if name of eineDatei is "IMG_0002.JPG" then my mailSenden()
end repeat
end tell
end try
end adding folder items to


on mailSenden()
tell application "Mail"
set mailEmpf to "123@abc.de"
set NeueMail to make outgoing message at end of outgoing messages
tell NeueMail
make new to recipient at end of to recipients with properties {address:mailEmpf}
set subject of NeueMail to "Hier Betreff eingeben"
set content of NeueMail to "Hier Text eingeben"
send NeueMail
end tell
quit
end tell
end mailSenden
0
aa23.04.1312:49
Ich würde dann allerdings vorher abfragen, ob Mail schon läuft. Mich würde es nerven, wenn das Script loslegt und mir einfach Mail beendet, obwohl ich es gerade benutze.
0
Lyhoo
Lyhoo23.04.1313:23
on adding folder items to this_folder after receiving added_items
try
tell application "Finder"
repeat with eineDatei in added_items
if name of eineDatei is "IMG_0002.JPG" then my mailSenden()
end repeat
end tell
end try
end adding folder items to


on mailSenden()
tell application "System Events" to copy (name of every process whose background only is false) to AlleApps
if "Mail" is in AlleApps then
set MailIstAus to false
else
set MailIstAus to true
end if

tell application "Mail"
set mailEmpf to "123@abc.de"
set NeueMail to make outgoing message at end of outgoing messages
tell NeueMail
make new to recipient at end of to recipients with properties {address:mailEmpf}
set subject of NeueMail to "Hier Betreff eingeben"
set content of NeueMail to "Hier Text eingeben"
send NeueMail
end tell
if MailIstAus then quit
end tell
end mailSenden
0
Megaseppl23.04.1314:02
Wenn es _mit_ Mail-Client laufen darf, benötigt es überhaupt kein Apple-Script. Eine Ordnerüberwachung mit Mailversand kann man sich auch einfacher erstellen - mit Automator.

Ganz ohne Mail-Client stelle ich mir auch schwierig ohne weitere Software vor... das ließe sich vielleicht besser extern regeln indem nicht direkt eine Mail verschickt wird, sondern eine URL auf einem Webserver aufgerufen wird (mit den gewünschten Parametern im Query) und der Server dann erst die Mail erstellt.
0
wurzelmac23.04.1315:15
Ohh, super! Danke allen!
aa: Auf dem betroffenen Mac mini läuft Mail nie, daher ist diese Abfrage (für mich) nicht nötig. (Weil Mail auf diesem Mac nie läuft, war mein Gedanke auch, es ohne Client zu versuchen.)

Danke nochmal!
wurzelmac
0
wurzelmac23.04.1316:55
Jetzt muss ich noch mal lästig sein: Das Skript funktioniert wunderbar, das eMail wird gesendet, allerdings wird Mail anschließend leider nicht beendet, warum auch immer. Vielleicht gibt es da noch einen speziellen Trick?
0
wurzelmac23.04.1319:31
Einmal geht's noch...

Ich habe vor dem "quit" einen "delay" von 30 sec eingebaut, nun funktioniert das Beenden!

Cheers,
Reinhard
0
Lyhoo
Lyhoo23.04.1319:43
OK. Dann geben wir Mail etwas Zeit, die E-Mail zu senden. Wenn es immer noch nicht klappt, dann die Zeit verlängern. Die Zahl hinter 'delay' ist die Dauer der Pause in Sekunden.

Ich entnehme Deinem Foto, daß Deine Webcam zurückgesetzt werden muß. Wenn das Zurücksetzen per Software geschieht, dann ist vielleicht auch das per Applescript möglich.



on adding folder items to this_folder after receiving added_items
try
tell application "Finder"
repeat with eineDatei in added_items
if name of eineDatei is "IMG_0002.JPG" then my mailSenden()
end repeat
end tell
end try
end adding folder items to


on mailSenden()
tell application "Mail"
set mailEmpf to "123@abc.de"
set NeueMail to make outgoing message at end of outgoing messages
tell NeueMail
make new to recipient at end of to recipients with properties {address:mailEmpf}
set subject of NeueMail to "Hier Betreff eingeben"
set content of NeueMail to "Hier Text eingeben"
send NeueMail
end tell
delay 5
quit
end tell
end mailSenden
0
Lyhoo
Lyhoo23.04.1319:44
Da kann man mal sehen. Ich habe mehr als 12 Minuten für die letzten Zeilen gebraucht.
0
wurzelmac23.04.1320:39
Hallo Lyhoo,
cool, dass du dich noch einmal meldest und bei meinem Skript-Problem hilfst - DANKE! Die Cam muss - sollte eben das imv_0002 auftauchen - komplett vom Strom getrennt werden (USB aus- und wieder einstecken!) und ist (für den Reset) somit nicht softwaremäßig steuerbar. Falls Interesse: hier gibts das Bild:

Cheers,
Reinhard
0
Gerhard Uhlhorn23.04.1320:50
wurzelmac
Ich habe vor dem "quit" einen "delay" von 30 sec eingebaut, nun funktioniert das Beenden!
Das geht so lange gut wie der Abstand zwischen neuen Bildern 30 mindestens Sekunden ist, würde ich jetzt mal annehmen. Oder wird mit einem neuen Durchlauf so lange gewartet bis der alte beendet ist?
0
wurzelmac23.04.1320:57
Hallo Gerhard,
der "Fehler", dass die Webcam plötzlich einen unerwarteten Absturz aus ihrer Fernsteuerung per anderen Skripts hat und nicht mehr das angesteuerte Bild 0001, sondern eben ein weiteres Bild 0002 liefert, tritt alle Wochen bis 10 Tage einmal auf - da sollten 30 Sekunden delay genügen. Mir geht es nur darum, möglichst zeitnah auf das reagieren zu können. Also nicht Stunden und Tage zur Reaktion zu benötigen.

Cheers,
Reinhard
0
Gerhard Uhlhorn23.04.1321:11
Ah, gut.
0
Lyhoo
Lyhoo23.04.1322:28
Würde es helfen, wenn der Computer kurz aus ist?

Ich hatte mal ein Script gebastelt, daß den Mac zu einer bestimmten Zeit eingeschaltet hat. Bei Bedarf suche ich es raus.

Ausschalten ist einfach:
Tell app "Finder" to shut down
Neustart:
Tell app "Finder" to restart
0
_mäuschen
_mäuschen24.04.1312:20
Anstelle eines simplen delay

repeat
if background activity count is 0 then exit repeat
delay 1
end repeat
0
Gerhard Uhlhorn24.04.1314:31
_mäuschen: Ja, das ist die bessere Lösung.
0
dersetzer24.04.1323:12
Kann man auch jede x-beliebig benannte Datei die im Ordner "xy" landet, automatisch senden und dann in den Papierkorb verschieben?
0
_mäuschen
_mäuschen25.04.1313:32
on adding folder items to this_folder after receiving added_items
try
tell application "Finder"
repeat with eineDatei in added_items
my mailSenden(eineDatei)
move eineDatei to trash
end repeat
end tell
end try
end adding folder items to


on mailSenden(theAttachment)
tell application "Mail"
set mailEmpf to "123@abc.de"
set NeueMail to make outgoing message at end of outgoing messages
tell NeueMail
make new to recipient at end of to recipients with properties {address:mailEmpf}
set subject of NeueMail to "Hier Betreff eingeben"
set content of NeueMail to "Hier Text eingeben

"
make new attachment with properties {file name:theAttachment} at after the last word of the last paragraph
send NeueMail
end tell
-- repeat
-- if background activity count is 0 then exit repeat
-- delay 0.1
-- end repeat
-- quit
end tell
end mailSenden
0
dersetzer25.04.1314:06
Bedankt. Klappt perfekt. Kann man da auch noch eine 2. Mailadresse eingeben?
0
_mäuschen
_mäuschen25.04.1314:41
Schau Dir das hier an

http://macscripter.net/viewtopic.php?id=29761
0
dersetzer25.04.1314:53
Nochmals herzlichen Dank. Klappt so wie gedacht.
0
wurzelmac26.04.1312:30
Herzlichen Dank auch von meiner Seite für den weiteren Input - much appreciated!

Cheers,
wurzelmac
0
Lyhoo
Lyhoo26.04.1312:40
Gerhard Uhlhorn
_mäuschen: Ja, das ist die bessere Lösung.
Stimmt.

wurzelmac: Schöne Aussicht bei Dir.

_mäuschen: Ich war gestern nicht am Mac. Danke daß Du das Script weiter bearbeitet hast.
Man erkennt an den Variablennamen genau, welche Zeile von Dir oder mir ist.
0
dersetzer27.04.1300:55
Könnte von euch Experten bitte jemand einmal über das Script schauen und sagen wo der Fehler liegt? Mail wird im Zuge der Ordneraktion an alle versendet, allerdings ohne den Anhang:

on adding folder items to this_folder after receiving added_items
try
tell application "Finder"
repeat with eineDatei in added_items
my mailSenden(eineDatei)
move eineDatei to trash
end repeat
end tell
end try
end adding folder items to


on mailSenden(theAttachment)
tell application "Mail"
set addressList to {"empfaenger1@blabla.bla", "empfaenger1@blabla.bla", "empfaenger2@blabla.bla"}
set nameList to {"Empfänger1", "Empfänger2", "Empfänger3"}

tell (current date) + 1 * days to set theSubject to "Blablatest " & its weekday & "," & space & its day & "." & space & its month & space & its year
tell application "Mail"
set theMessage to make new outgoing message with properties {visible:true, subject:theSubject, content:"Test for today. Blah blah blah. "}
tell theMessage
repeat with i from 1 to count nameList
end repeat
make new to recipient at end of to recipients with properties {name:item i of nameList, address:item i of addressList}
end tell
send theMessage
end tell

make new attachment with properties {file name:theAttachment} at after the last word of the last paragraph
send NeueMail
end tell
-- repeat
-- if background activity count is 0 then exit repeat
-- delay 0.1
-- end repeat
-- quit
end mailSenden
0
Lyhoo
Lyhoo27.04.1310:12
① Die Datei wurde im falschen Format übergeben.
② Im unteren Teil war das Senden doppelt. Dadurch wurde die Mail gesendet, bevor der Anhang dran war!

on adding folder items to this_folder after receiving added_items
    try
        tell application "Finder"
            repeat with eineDatei in added_items
                set einedateiA to eineDatei as alias
                my mailSenden(einedateiA)
                move eineDatei to trash
            end repeat
        end tell
    end try
end adding folder items to

on mailSenden(theAttachment)
    tell application "Mail"
        set addressList to {"empfaenger1@blabla.bla", "empfaenger1@blabla.bla", "empfaenger2@blabla.bla"}
        set nameList to {"Empfänger1", "Empfänger2", "Empfänger3"}
        tell (current date) + 1 * days to set theSubject to "Blablatest " & its weekday & "," & space & its day & "." & space & its month & space & its year
        --tell application "Mail"
        set theMessage to make new outgoing message with properties {visible:true, subject:theSubject, content:"Test for today. Blah blah blah. "}
        tell theMessage
            repeat with i from 1 to count nameList    
                make new to recipient at end of to recipients with properties {name:item i of nameList, address:item i of addressList}
            end repeat
            make new attachment with properties {file name:theAttachment} at after the last word of the last paragraph
        end tell
        send theMessage
    end tell
end mailSenden
0
dersetzer28.04.1300:15
Kann man nicht besser machen. Nochmals vielen Dank
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.