Fischer-Bayern.de
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

script aus script aufrufen + variablen übergeben

 
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Fischer-Bayern.de Foren-Übersicht -> AppleScript-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 11.01.2006 - 12:16    Titel: script aus script aufrufen + variablen übergeben Antworten mit Zitat

Hallöle
Ich möchte ein Droplet-Script erstellen, dass, je nach erfüllter Bedingung, verschiedene andere Scripte aufruft (bzw. ein entspr. anderes Script).
Einige ermittelte Variablen des ursprünglich gestarteten Droplet-Scripts (Name/Ort des gedroppten Ordners/Files) müsste ich dann aber an das jeweilig gestartete Script übergeben.
Ist das generell möglich, und kann mir jemand zusammenfassend sagen, wie ich das bewerkstelligen kann?
Es gibt zwar bereits einige Threads hier, die in eine ähnliche Richtung zielen, aber ich bin leider nicht so richtig fündig geworden bzw. schlau draus geworden.

Vielen Dank schon mal im Voraus
_________________
- anholn deit kriegen -
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 11.01.2006 - 13:59    Titel: Hintergrund der Frage Antworten mit Zitat

Der Hintergrund für mein Vorhaben:

Ich habe bereits verschiedene Droplet-Scripts für ganz unterschiedliche Aufgaben.

Für diese vielen Einzel-Scripts würde ich gern einen universelles Droplet-Starter-Script erstellen, das mir die Entscheidung abnimmt, auf welches Script ich den betreffenden Ordner ziehen muss, um die gewünschte Funktion auszuführen. (welches Script angewendet werden muss, lässt sich aus dem Orndnernamen ableiten).

So hätte ich nur noch ein Droplet für alle Aufgaben, ohne alle Scripte (z.T. recht umfangreich) zu einem Script verschmelzen zu müssen.

Snow: Aufruf von Scripten aus Scripten heraus, und die Übergabe/Speicherung von properties von einem Script zum anderen doch eigentlich mal ein Thema für einen "Workshop". Du kannst solche Sachen doch immer so schön auf den Punkt bringen. (Wann erscheint eigentlich dein erstes AppleScript-Buch?). Kann man schon vorbestellen? Surprised)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 11.01.2006 - 20:02    Titel: Antworten mit Zitat

Hallo Holli,

bei einem normalen Skript kann man an den run-Handler Daten übergeben, bei einem Droplet ist mir keine Möglichkeit bekannt - es wird ja schon eine Liste mit Referenzen zu den gedroppten Objekten übergeben.

Ich würde sämtliche Skripte in ein einziges packen - in verschiedene Handler. Im "on open"-Handler gehst du die Referenz-Liste in einer Schleife durch, prüfst jeweils den Ordnernamen und leitest die entsprechende Referenz an den benötigten Handler weiter. Wenn's wirklich vom Ordnernamen abhängt, ist das eigentlich kein Problem, oder?
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 12.01.2006 - 00:46    Titel: Antworten mit Zitat

Hallo Snow
Danke für die (wie immer) promte Antwort.

Snow hat Folgendes geschrieben:
bei einem normalen Skript kann man an den run-Handler Daten übergeben, ...


Wie sähe denn sowas aus? Wie sieht überhaupt ein Scriptaufruf aus einem Script aus? Ich müsste eigentlich nur ein paar Variablen übergeben. Vielleicht als properties in ein Art Preferenz-Script, dann das jeweilige Script starten, und aus dem Preferenz-Script wieder laden, oder so.

Snow hat Folgendes geschrieben:
Ich würde sämtliche Skripte in ein einziges packen - in verschiedene Handler. Im "on open"-Handler gehst du die Referenz-Liste in einer Schleife durch, prüfst jeweils den Ordnernamen und leitest die entsprechende Referenz an den benötigten Handler weiter. Wenn's wirklich vom Ordnernamen abhängt, ist das eigentlich kein Problem, oder?


Das geht natürlich, fänd ich aber persönlich etwas unübersichtlich.
Und funktionieren denn auch Handler innerhalb von Handlern? (habe schon einige in den jeweiligen Einzel-Scripten)

In einem anderen Tread ("Script-Dateien per Script anlegen) benutzt du folgende Aufrufe:

script blablabla
property Schiessmichtot1 : ""
property Schiessmichtot2 : ""
end script

Was bewirken diese? Ist das die generierung eines neuen Scriptes, das dann über store gesichert wird?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 12.01.2006 - 01:08    Titel: Antworten mit Zitat

Normales Skript mit Parametern starten geht so:

Skript, das ein weiteres Skript aufruft:

run script file "Macintosh HD:Users:snow:Documents:AppleScript:X Scripts:Property-Skript.app" with parameters {"Applescript ist total cool!"}

Aufgerufenes Skript, das Parameter übernimmt:

on run {x}
    
    
display dialog x
    
end run


Was die Skript in "Script-Dateien per Script anlegen" anbelangt, müsste ich erst mal nachschauen. Aber die Richtung stimmt schon.
Handler innerhalb Handlern funktionieren nicht - aber wenn du die Skripte innerhalb deines Hauptskripts als extra Skripte deklarierst, kannst du dort auch die Parameterübergabe nutzen.

Hier ein kleines Beispiel, das die Sache verdeutlichen soll und zum Ausprobieren geeignet ist:

script abc
    on run {x}
        display dialog x
        
dlog()
    end run
    
    
on dlog()
        run script def of me with parameters ("Das klappt ja tatsächlich!")
    end dlog
end script

script def
    on run {y}
        display dialog y
    end run
end script

run script abc with parameters ("Hallo Welt")


An den geschweiften Klammern bei der Parameterübergabe siehst du, dass es eine Liste ist - es sind also durchaus mehrere Parameter möglich.

run script abc with parameters {"Hallo Welt", 5}

script abc
    on run {x, z}
        display dialog x
        
display dialog z
    end run
end script



Ich hoffe, das hilft dir weiter.
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
spirigwi
•----->
•----->


Anmeldedatum: 10.07.2003
Beiträge: 1517
Wohnort: Olten-CH

BeitragVerfasst am: 12.01.2006 - 09:56    Titel: Antworten mit Zitat

IScript hat Folgendes geschrieben:

(welches Script angewendet werden muss, lässt sich aus dem Orndnernamen ableiten).


auf OS9 hatte ich immer diese Architektur verwendet ,
sind wir hier auf OS9? (ev geht das auch mit kleiner Adaptation auf OSX)

Re-EDIT : zu unausgereift aus Zeitmangel
_________________
 Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius


Zuletzt bearbeitet von spirigwi am 13.01.2006 - 03:45, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 12.01.2006 - 12:02    Titel: Antworten mit Zitat

Huhu Snow + spirigwi

spirigwi hat Folgendes geschrieben:
auf OS9 hatte ich immer diese Architektur verwendet ,
sind wir hier auf OS9?
(ev geht das auch mit kleiner Adaptation auf OSX) ...

Ja wir sind auf OS9, ich bräucht's dann aber auch für OSX.
Der Code der Einzelscripte läuft aber auf beiden OSen, so dass das hinzukriegen sein sollte.

spirigwi hat Folgendes geschrieben:
... Kurz: aufgrund des Namens des gedropten AS-Files startet das Droplet dessen Skript. Damit kann das Skript auch im Droplet selbst enhalten sein.
PS: das ist aber nur ein Modell und macht per se natürlich noch keinen Sinn.

Mit dem Sinn dieses Modells habe ich auch noch so meine Probleme. Werde aber trotzdem vielleicht die eine oder andere Zeile aus deinem Beispiel brauchen können.
Mir scheint Snows Ansatz aber vielversprechender ("Geht nicht gibt's nicht, gelle Snow?"). Prinzipiell scheint mir mein Vorhaben jetzt doch möglich zu sein. Ich werd' ein bisschen brauchen, um das alles auszuprobieren. Ich meld' mich dann auf jeden Fall wieder an dieser Stelle. Es wird sicher auch noch an einigen Ecken haken.
Vielen Dank schon mal für die Richtungsvorgabe
_________________
- anholn deit kriegen -
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 12.01.2006 - 13:00    Titel: Antworten mit Zitat

Hallo Snow

Wie sähe es denn mit den Handlern bei der Variante mit der Scriptdeklaration der Einzelscripte im Hauptscript aus?:

Sind Handler, die ich innerhalb einer Scriptdeklaration ("Unter-Script")definiere dann nur für dieses Script gültig, während Handler, die ich außerhalb der Scriptdeklaration der Einzelscripte definiere, in allen "Unter-Scripts" angewendet werden können?

Und, das Wichtigste: darf es sich bei meinem Hauptscript denn auch um ein Droplet handeln ("on open"-Handler)? Müsste doch auch gehen, oder?
_________________
- anholn deit kriegen -
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 12.01.2006 - 13:41    Titel: Antworten mit Zitat

Hallo Snow
Dein Vorschlag war mal wieder super.
Hab folgendes probiert, und klappte prima.

    on open Gedroppt
    tell application "Finder"
    set derpfad to ((item 1 of Gedroppt) as text)
    set dername to ((name of folder derpfad) as text)
    --Bedingung, welches SubScript startet
    if dername contains "a" then run script SubScriptA of me with parameters {dername, derpfad}
    if dername contains "b" then run script SubScriptB of me with parameters {dername, derpfad}
    end tell
    end open

    -- Und hier die "Unter-Scripts"
    script SubScriptA
    on run {dername, derpfad}
    display dialog "Der a-Ordner heißt" & dername & return & "Pfad: " & derpfad
    end run
    end script

    script SubScriptB
    on run {dername, derpfad}
    display dialog "Der b-Ordner heißt" & dername & return & "Pfad: " & derpfad
    end run
    end script


Zuletzt bearbeitet von iScript am 13.01.2006 - 00:33, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
spirigwi
•----->
•----->


Anmeldedatum: 10.07.2003
Beiträge: 1517
Wohnort: Olten-CH

BeitragVerfasst am: 12.01.2006 - 15:21    Titel: Antworten mit Zitat

1)
iScript hat Folgendes geschrieben:
Aufruf von Scripten aus Scripten heraus, und die Übergabe/Speicherung von properties von einem Script zum anderen
Re-EDIT : zu unausgereift aus Zeitmangel

Schade dass von propertys nichts zu sehen. Ich hoffte, dass propertys Werte in ein zentrales AS-File hinein so speichern könnten, dass sie zeitlich hintereinander aus verschiedenen Scripten wieder abgerufen werden könnten. Aber das war hier wohl nicht die Idee des threads.
_________________
 Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius


Zuletzt bearbeitet von spirigwi am 13.01.2006 - 03:56, insgesamt 4-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
iScript
•---->
•---->


Anmeldedatum: 29.03.2001
Beiträge: 1116

BeitragVerfasst am: 13.01.2006 - 00:27    Titel: Antworten mit Zitat

hallo spirigwi
ich werde es wohl so machen, wie in meinem letzten posting beschrieben.
das ist ja ein droplet, das mit dem on open handler die entsprechenden variablen an die "unter-scripts" (das werden die bisherigen bereits funktionstüchtigen scripts, die ja bislang als einzelne scripts vorliegen, und die ich nun als "unter-scripts" mit einfügen werde) liefert.
so habe ich dann ein script für alle anstehenden aufgaben.

wichtig war eben auch, dass die bestehenden handler der einzelscript weiterhin funktionieren, was ja nicht gegeben wäre, wenn ich sie selbst als handler in das drop-script eingebaut hätte.

snow hat mich ja verstanden, und es eigentlich auf den punkt gebracht und auch eine praktikable lösung angeboten.

mit deinen postings (deine bemühungen in allen ehren) habe ich, ohne dir vor den kopf stossen zu wollen, so meine probleme: deine formulierungen sind so wirsch, wage und zum teil auch unpräzise, dass es mir schwer fällt, dem immer zu folgen. das ist dann eher verwirrend als hilfreich.
wie gesagt, ich will dir nicht vor den kopf stossen, aber du solltest vielleicht etwas mehr zeit darauf verwenden, deine formulierung zu präzisieren und auf verständlichkeit zu achten.
das kommt bei ohnehin schon verwirrten apple-scriptern ganz sicher besser an, als bunte postings mit "lustigen" einwürfen, die letztendlich keinen spass machen, weil es so schwierig ist, sich in sie einzudenken.

ich werde den ansatz mal weiterverfolgen, und melde mich wieder, falls weitere probleme auftauchen, und wenn alles glückt, werde ich die lösung hier mal hineinstellen.

danke
_________________
- anholn deit kriegen -
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Beiträge der letzten Zeit anzeigen:   
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Fischer-Bayern.de Foren-Übersicht -> AppleScript-Forum Alle Zeiten sind GMT + 2 Stunden
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2002 phpBB Group
Deutsche Übersetzung von phpBB.de


AppleScript für absolute Starter