Connect failed: Connection timed out

[GastForen Programmierung/Entwicklung AppleScript Dateinamen kopieren wenn Dateien in einen überwachten Ordner kopiert werden

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Dateinamen kopieren wenn Dateien in einen überwachten Ordner kopiert werden

mischmaster
Beiträge gesamt: 20

3. Nov 2016, 17:10
Beitrag # 1 von 20
Bewertung:
(6849 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi,

ich möchte gerne einen überwachten Ordner haben. Wenn ich in diesen Ordner neue Datein kopiere, dann sollen die Dateiname in die Zwischablage kopiert werden und dananch in eine Mail eingefügt werden.
Um die Dateinamen zu kopieren habe ich eigentlich schon ein Skript, daß aber leider nicht in Automator funktioniert.
Automator brauche ich, damit ich die nachfolgenden Schritte, wie Zwischenablage kopieren, Email verfassen und absenden, erstellen kann. Denn mit Apple Skript kenne ich mich dazu zu wenig aus.

Hier das Skript:

on adding folder items to this_folder after receiving these_items
my germaine(this_folder, these_items)
end adding folder items to

on germaine(this_folder, the_items)
try
set theNames to {}
tell application "Finder"
repeat with i in the_items
set end of theNames to name of i
end repeat
end tell
set {TID, text item delimiters} to {text item delimiters, return}
set the clipboard to theNames as text
set text item delimiters to TID
end try
end germaine

Danach würden in Automator die weiteren Aktionen kommen, aber die Filenamen werde einfach nicht in die Zwischablage kopiert. Automator erstellt einen .workflow datei, die ich unter "Ornderaktionen konfigurieren" zum Ordner hinzufüge. Das funkttioniert wie gesagt nicht.
Wenn ich dort nur das Skript mit einer .scpt Datei hinzufüge geht es.

Hat jenmand eine Idee?

Dank,

Michi
X

Dateinamen kopieren wenn Dateien in einen überwachten Ordner kopiert werden

Hans Haesler
  
Beiträge gesamt: 5826

3. Nov 2016, 19:40
Beitrag # 2 von 20
Beitrag ID: #553682
Bewertung:
(6811 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Michi,

herzlich willkommen im AppleScript-Forum auf HDS! :-)

Welche Version von Mac OS X ist bei Dir im Einsatz?

Gruss, Hans


als Antwort auf: [#553674]

Dateinamen kopieren wenn Dateien in einen überwachten Ordner kopiert werden

Hans Haesler
  
Beiträge gesamt: 5826

3. Nov 2016, 20:45
Beitrag # 3 von 20
Beitrag ID: #553683
Bewertung:
(6786 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Michi,

hier funktioniert Dein Script.

Vermutlich hast Du im Dialog "Ordneraktionen konfigurieren" bei der Checkbox "Ordneraktionen aktivieren" den Haken nicht gesetzt.

Gruss, Hans


als Antwort auf: [#553674]

Dateinamen kopieren wenn Dateien in einen überwachten Ordner kopiert werden

mischmaster
Beiträge gesamt: 20

3. Nov 2016, 23:41
Beitrag # 4 von 20
Beitrag ID: #553684
Bewertung:
(6738 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi,

ja das Skript alleine funktioniert auch. Aber wenn ich es in Kombination mit Automator einsetze geht es komischerwesie nicht mehr. Ich kann ja morgen mal meine Automator Datei hochladen. Vielleicht findest du einen Fehler.
Und des Hacken werde ich morgen auch nochmal überprüfen.

Danke,

Michi


als Antwort auf: [#553683]

Dateinamen kopieren wenn Dateien in einen überwachten Ordner kopiert werden

mischmaster
Beiträge gesamt: 20

4. Nov 2016, 09:30
Beitrag # 5 von 20
Beitrag ID: #553687
Bewertung:
(6665 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi,

also Häckchen war gesetzt. Die Filenamen werden bei meiner Automator Ordner Aktion aber trotzdem nicht in die Zwischenablage kopiert. Ich hab euch mal einen Download Link zu der Automator Datei angehängt. Vielleicht findet ja jemand den Fehler.

https://mischmaster.de:5001/sharing/X6832Rfw1

Danke


als Antwort auf: [#553684]

Dateinamen kopieren wenn Dateien in einen überwachten Ordner kopiert werden

Hans Haesler
  
Beiträge gesamt: 5826

4. Nov 2016, 09:58
Beitrag # 6 von 20
Beitrag ID: #553690
Bewertung:
(6659 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Michi,

ich habe schon mal die Datei heruntergeladen.

Aber gleich muss ich weg und kann die Sache erst im Laufe des Nachmittags anschauen.
Vielleicht findet ja ein versierter Mitleser heraus, wo es klemmt.

Gruss, Hans


als Antwort auf: [#553687]

Dateinamen kopieren wenn Dateien in einen überwachten Ordner kopiert werden

mischmaster
Beiträge gesamt: 20

4. Nov 2016, 10:18
Beitrag # 7 von 20
Beitrag ID: #553692
Bewertung:
(6644 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ja kein Thema. Ich freue mich über jede Hilfe.


als Antwort auf: [#553690]

Dateinamen kopieren wenn Dateien in einen überwachten Ordner kopiert werden

Hans Haesler
  
Beiträge gesamt: 5826

5. Nov 2016, 16:31
Beitrag # 8 von 20
Beitrag ID: #553722
Bewertung:
(6518 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Michi,

der "Automator" ist nicht mein Freund. Dennoch habe ich allerlei versucht. Aber vergebens.
Fazit: Anscheinend wird die Ordneraktion gar nicht ausgeführt.

Deshalb schlage ich vor, den Automator-Workflow durch eine normale Ordneraktion zu ersetzen.
Übrigens: Es ist nicht notwendig, die Zwischenablage zu bemühen.

Code
on adding folder items to this_folder after receiving these_items 

set theNames to {}
tell application "Finder"
repeat with i in these_items
set end of theNames to name of i
end repeat
end tell
set TID to AppleScript's text item delimiters
set AppleScript's text item delimiters to return
set nameString to theNames as text
set AppleScript's text item delimiters to TID

tell application "Mail"
set newMessage to make new outgoing message with properties ¬
{visible:true, subject:"Dateinamen", content:nameString}
tell newMessage
make new to recipient at end of to recipients with properties ¬
{name:"Xyz", address:"asa@asasa.de"}
end tell
send newMessage
end tell

end adding folder items to

Hier funktioniert es wie erwartet.

Gruss, Hans


als Antwort auf: [#553692]
(Dieser Beitrag wurde von Hans Haesler am 5. Nov 2016, 21:05 geändert)

Dateinamen kopieren wenn Dateien in einen überwachten Ordner kopiert werden

mischmaster
Beiträge gesamt: 20

5. Nov 2016, 17:20
Beitrag # 9 von 20
Beitrag ID: #553725
Bewertung:
(6500 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi,

erstmal vielen Dank, daß du dir (am Wochenende) so viel Mühe gemacht hast.

Ich hab gerade keinen Mac zur Hand, aber werde am Montag das Skript gleich testen.
Für meine laienhaften Apple Script Kenntnisse liest es sich sehr vielversprechend.

Wie hast du dir denn Apple Script bei gebracht. Uni, Bücher, Videos? Ich denke, es wäre sinnvoll, da tiefer einzusteigen, denn mit dem richtigen Skript kann man sich viel Handarbeit sparen.

Bis Montag!


als Antwort auf: [#553722]

Dateinamen kopieren wenn Dateien in einen überwachten Ordner kopiert werden

Hans Haesler
  
Beiträge gesamt: 5826

5. Nov 2016, 21:08
Beitrag # 10 von 20
Beitrag ID: #553735
Bewertung:
(6449 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Michi,

bitte sehr.

Im Script fehlte noch das Senden der Mitteilung. Dafür braucht es nur den Befehl 'send'. Diese Zeile habe ich nachträglich eingefügt.

Antwort auf: Wie hast du dir denn Apple Script bei gebracht. Uni, Bücher, Videos?

Mit Büchern. Also im Selbststudium. Als Grundlage hatte ich die Kenntnisse, welche ich mir beruflich auf dem Harris-System aneignete. Privat entwickelte ich auf einem Amiga 500 verschiedene Projekte mit "Amiga Basic". Später, auf einem Mac, auch mit C++.

Ab 1994 beschäftigte ich mich mit AppleScript. Hauptsächlich für QuarkXPress. Als Einsteiger kaufte ich mir das Buch "The Complete AppleScript Handbook" von Danny Goodman. Die Begleitdiskette enthielt unter anderem den Scripteditoren und die AppleScript-Erweiterung. Damals war AppleScript nicht in der Systeminstallierung inbegriffen! :-) Und es gab weder Foren noch Google. Ich war auf mich allein gestellt.

Ende 2004 der berufliche Umstieg von QuarkXPress 4.11 unter Mac OS 9.2 auf InDesign CS2 unter Windows XP. Also sämtliche Produktionsscripts nach JavaScript portieren ... Seither ziehe ich das Entwickeln von JavaScripts vor.

Gruss, Hans


als Antwort auf: [#553725]

Dateinamen kopieren wenn Dateien in einen überwachten Ordner kopiert werden

mischmaster
Beiträge gesamt: 20

5. Nov 2016, 22:09
Beitrag # 11 von 20
Beitrag ID: #553736
Bewertung:
(6427 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ok, super.
Ich nehme an, dass ich bei subject nach dem : den Betreff und den Nachrichtentext frei editieren kann.
Content:namestring sind wahrscheinlich die Dateinamen. Kann ich davor auch noch einen individuellen Text einfügen.

So a la: "Es befinden sich neue Dateien auf dem Server" und dann kommen die Dateinamen.

Ich muss das Skript auf mehrere Ordner anpassen, die beim Eingang von Dateien an verschiedenen Empfänger Emails versendet.

Was ist der Unterschied zwischen name und adress? Kann ich dort auch Email Gruppen eingeben? Falls nicht, mit welchem Zeichen trenne ich mehrere Empfänger?

Danke dir.

Michi


als Antwort auf: [#553735]

Dateinamen kopieren wenn Dateien in einen überwachten Ordner kopiert werden

Hans Haesler
  
Beiträge gesamt: 5826

5. Nov 2016, 22:55
Beitrag # 12 von 20
Beitrag ID: #553737
Bewertung:
(6410 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Michi,

ja, den Betreff "Dateinamen" kannst Du durch etwas anderes ersetzen.

Beim 'contents:' ist es möglich, vor den Dateinamen einen fixen Text einzugeben.
Letzterer ist ein String (= Textkette), welcher von geraden Anführungszeichen umgeben ist.
Die Dateinamen befinden sich in der Variablen 'nameString'. Diese muss mit einem "&"-Zeichen an den Text angefügt werden:

Code
content:"Es befinden sich neue Dateien auf dem Server" & return & return & nameString 

Bei 'name' kann ein Name eingetragen werden, z.B. "Michi". Kann man aber auch weglassen. Die 'address' – hingegen – ist für die eigentliche E-Mail-Adresse bestimmt.

Mehrere Empfänger können – glaube ich zu wissen – mittels einer Schleife eingefügt werden. Doch das muss ich zuerst ausprobieren. Aber erst morgen, denn "Mail" kenne ich nicht gut und habe kaum jemals ein Script dafür geschrieben.

Gruss, Hans


als Antwort auf: [#553736]

Dateinamen kopieren wenn Dateien in einen überwachten Ordner kopiert werden

mischmaster
Beiträge gesamt: 20

5. Nov 2016, 23:02
Beitrag # 13 von 20
Beitrag ID: #553738
Bewertung:
(6394 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Cool, hab ich verstanden.

Ich kann's kaum erwarten das Skript am Montag auszuprobieren.

Großartig!


Gute Nacht,

Michi


als Antwort auf: [#553737]

Dateinamen kopieren wenn Dateien in einen überwachten Ordner kopiert werden

Hans Haesler
  
Beiträge gesamt: 5826

6. Nov 2016, 09:50
Beitrag # 14 von 20
Beitrag ID: #553743
Bewertung:
(6280 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Michi,

in der folgenden Version des Scripts ist der Text der Mitteilung an die Anzahl der Dateien angepasst worden:
Der variablen 'nObj' wird die Anzahl der Dateien zugewiesen. Wenn mehr als eine Datei neu ist, wird die Variable mit den "&"-Zeichen der Textkette einverleibt.

Um mehrere E-Mail-Adressen einzufügen, gibt es zwei Möglichkeiten:
– für jede Adresse eine Scriptzeile;
– eine Liste aufstellen, eine Schleife durch diese Liste und bei jedem Umgang den 'to recipient' (das "An"-Gefäss) für die aktuelle Adresse erzeugen.

Im Script ist die erste Lösung eingefügt.

Code
-- die Ordneraktion 
on adding folder items to this_folder after receiving these_items

-- die Namen der Dateien auflisten
set theNames to {}
tell application "Finder"
repeat with i in these_items
set end of theNames to name of i
end repeat
end tell
set TID to AppleScript's text item delimiters
set AppleScript's text item delimiters to return
set nameString to theNames as text
set AppleScript's text item delimiters to TID

-- die Anzahl Dateien
set nObj to count of these_items
-- und den entsprechenden Text vorbereiten
if nObj is 1 then
set msgText to "Es befindet sich eine neue Datei auf dem Server"
else
set msgText to "Es befinden sich " & nObj & " neue Dateien auf dem Server"
end if

-- die Mitteilung vorbereiten ...
tell application "Mail"
set newMessage to make new outgoing message with properties ¬
{visible:true, subject:"Dateinamen", content:msgText & return & return & nameString}
tell newMessage
make new to recipient at end of to recipients with properties {address:"abc@xyz.com"}
make new to recipient at end of to recipients with properties {address:"def@xyz.com"}
make new to recipient at end of to recipients with properties {address:"ghi@rxyz.com"}
end tell
-- ... und senden
send newMessage
end tell

end adding folder items to

Mit der Liste und der Schleife könnte es so aussehen. Die Liste beginnt und endet mit einer geschweiften Klammer. Jede Adresse ist mit Anführungszeichen eingefasst. Nach dem schliessenden Anführungszeichen ein Komma und ein Leerschlag.

Code
    set adrList to {"abc@xyz.com", "def@xyz.com", "ghi@xyz.com"} 
set nAdr to count of adrList
repeat with n from 1 to nAdr
set curAdr to item n of adrList
tell newMessage
make new to recipient at end of to recipients with properties {address:curAdr}
end tell
end repeat

Übrigens: Das Attribut 'name' lieber nicht verwenden. Ich habe probehalber "Michi" eingefügt. Mit dem Ergebnis, dass mein Name in sämtlichen alten Mitteilungen nun "Michi" lautet.

Gruss, Hans


als Antwort auf: [#553738]

Dateinamen kopieren wenn Dateien in einen überwachten Ordner kopiert werden

mischmaster
Beiträge gesamt: 20

6. Nov 2016, 09:56
Beitrag # 15 von 20
Beitrag ID: #553744
Bewertung:
(6276 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Morgen,

hey nochmals vielen Dank, daß du dir so viel Mühe gibst.

Ich hab dieselbe Frage schon in einigen anderen Foren gestellt (u.a. Macscripter und macuser). Aber entweder für die war die Frage zu trivial oder alle hatten keinen Bock. Auf jeden Fall habe ich keine Hilfe bekommen.

Für mich als Apple Script Laien sieht das alles super aus. Bevor ich weiter Fragen stelle, probiere ich es am Montag aus. Das ist jetzt schon die Luxus Variante dessen, was ich mir vorgestellt habe.

Schönen Sonntag dir,

Michi


als Antwort auf: [#553743]
X