• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

Mein erstes AppleScript

Axel!

Osnabrücker Reinette
Registriert
21.12.07
Beiträge
991
Hallo,
ich versuche gerade mein erstes AppleScript zu schreiben. Es soll mir iTunes, Mail, Safari und Adium öffnen. Irgendwie macht es das aber nicht. Ich habe im Automator ein neues AppleScript hinzugefügt und dann als Text:

tell application "iTunes, Mail, Adium, Safari"
open

eingegeben. Wenn ich nur ein Programm in die Gänsefüßchen setzte, dann funzt es, aber so nicht. Kann mir einer sagen, wieso das nicht geht?

Gruß
Axel!
 
Du kannst immer nur eine Applikation auf ein mal ansprechen. Also musst du es so machen
tell application "iTunes" to activate
tell application "Mail" to activate
...

Und es muss activate und nicht open sein um ein Programm zu starten.
 
  • Like
Reaktionen: Axel!
Meines erachtens musst du alles extra schreiben und anstatt den Befehl open zu nehmen, würde ich auf activate zurückgreifen. Das sieht dann wie folgt aus:

tell application "Adium"
activate
end tell
tell application "iTunes"
activate
end tell
tell application "Mail"
activate
end tell
tell application "Safari"
activate
end tell


Ich hoffe ich konnte dir helfen.

MfG
Daporix
 
  • Like
Reaktionen: Axel!
Wenn man nur ein Befehl übergeben will reicht es halt mit tell application to sonst mit tell und end tell
 
wenn es nur darum geht, das program zu öffnen und weiter nichts zu machen brauchst du kein "end tell"
 
"launch" ist die bessere wahl, da die apps dann (im gegensatz zu "activate") nicht zwangsläufig in den vordergrund geholt werden, und nicht abgewartet wird, bis dies der fall ist, bevor die nächste app gezündet wird. dein versuch konnte nicht klappen, da es die application "iTunes, Mail, Adium, Safari" nicht gibt (ist ja nur ein string, der da übergeben wird, keine liste, aber auch mit einer liste klappt das nicht). du musst ein liste nehmen, und diese per repeat durchlaufen:

repeat with myApp in {"Adium", "iTunes", "Mail", "Safari"}
launch application myApp
end repeat
 
"launch" ist die bessere wahl, da die apps dann (im gegensatz zu "activate") nicht zwangsläufig in den vordergrund geholt werden, und nicht abgewartet wird, bis dies der fall ist, bevor die nächste app gezündet wird. dein versuch konnte nicht klappen, da es die application "iTunes, Mail, Adium, Safari" nicht gibt (ist ja nur ein string, der da übergeben wird, keine liste, aber auch mit einer liste klappt das nicht). du musst ein liste nehmen, und diese per repeat durchlaufen:

repeat with myApp in {"Adium", "iTunes", "Mail", "Safari"}
launch application myApp
end repeat

Du hast recht das ist die eleganteste Lösung