Script-Start mit Einblendmenu

Hallo,

kann man ein AppleScript auch über einen Knopf mit Einblendmenu
starten? Wenn ja wie?
Meine Versuche mehrere Titel anzugeben und dann im Knöpfe-Feld die
Apple-Script-Namen anzugeben waren leider erfolglos.

System: Mac OS 10.5.6, Ragtime 6.5 (Build 1812)

Danke und viele Grüße,
Hans-Jörg

Re: Script-Start mit Einblendmenu

#8438 On 1 März, 2009 23:08 Thomas Kaegi said,

Hallo Hansjörg

kann man ein AppleScript auch über einen Knopf mit Einblendmenu starten? Wenn ja wie?

Das geht deshalb nicht, weil ein Einblendmenü nur Auswählen, aber nicht auch noch einen Befehl auslösen kann. Befehle lassen sich nur mit einem Knopf vom Typ "Knopf" oder "unsichtbarer Knopf" auslösen. Und umgekehrt kannst du in einem dieser Knöpfe nicht eine Formel für die Auswahl eines Befehls eingeben.

Folgender Lösungsvorschlag:

1. Platziere in einem Rechenblatt "Scripts" in Spalte B je einen Knopf (Typ "Knopf"), alle mit dem Titel "Auslösen", und mit je einem der AppleScript-Befehle, genau so wie sie als Namen des AppleScripts definiert sind (der Befehl muss nicht zwingend im Menü erscheinen). Ich nehme im Folgenden an, dass du zwischen 5 Befehlen (AppleScripts) wählen willst.

2. Daneben, also in Spalte C, schreibst du die gleichen Befehlsnamen nochmals als gewöhnlichen Text.

3. Definiere einen Knopf "Scriptwahl" vom Typ "Einblendmenü". Im Titelfeld des Knopfs gibst du als Formel die Referenz "Scripts!C1:C5" ein. Option: "Index ist Resultat". Damit zeigt das Einblenmenü die Namen der zur Verfügung stehenden Scripts.

4. In Zelle A1 des Rechenblatts "Scripts" gibst du die Formel "Index(B1:B5;Scriptwahl!X)" ein. Damit wird der Knopf mit dem gemäss Einblendmenü ausgewählten Befehl in diese Zelle geholt. Vom Rechenblatt "Scripts" soll nur die Zelle A1 im Layout sichtbar sein, am besten direkt neben dem Knopf "Scriptwahl".

Danach kannst du mit dem Einblendmenü das gewünschte Script auswählen. Mit anschliessendem Klick auf den daneben stehenden Knopf "Auslösen" wird das gewählte Script ausgeführt.

Ich habe sowieso Bedenken gegen das direkte Auslösen eines Scripts nur mit der Auswahl im Einblendmenü. Wie leicht ist eine falsche Auswahl getroffen! Die Struktur "Zuerst auswählen, dann auslösen" scheint mir sicherer und sinnvoll.

Gruss
Thomas

Re: Script-Start mit Einblendmenu

#8439 On 2 März, 2009 09:55 djschulz said,

Hallo,

wenn es eine Möglichkeit gäbe ein Skript per Formel aufzurufen, wäre das sehr hilfreich hier (Wink an die Entwickler!).

Wenn man es aber in Kauf nehmen kann mit zwei Knöpfen zu arbeiten, einem mit den Namen der Skripte, und einem normalen Knopf zum Ausführen, geht das auch wie im folgenden beschrieben.

1. In einem neuen leeren Ragtime Dokument 4 Skripte anlegen.

Name des erstens Skripts: Skript 1
Code: display dialog "Hiho"

Name des zweiten Skripts: Skript 2
Code: say "Hello RagTime"

Name des dritten Skripts: Skript 3
Code: beep 5

Name des vierten Skripts: Ausführen
Code:
set mySkript to value of cell "A1" of table "Rechenblatt 1" of document 1
do script mySkript

2. Auf einer leeren Layoutseite ein Knopfaufziehen.

3. In der Knopfinformation den Typ auf "Einblendmenü" stellen und als Titel eingeben:
Skript 1
Skript 2
Skript 3

4. In der Knopfinformation bei "Radioknöpfe und Einblendmenüs" "Titel ist Resultat" auswählen und den Dialog schließen.

5. Ein kleines Rechenblatt neben dem Knopf aufziehen und in Zelle A1 folgende Formel schreiben:
Knopf 1!X
Dieses Rechenblatt enthält immer den im Knopf ausgewählten Eintrag. (Wenn jemand einen Trick kennen sollte, wie man den ausgewählten Eintrag per AppleScript abfragen kann, wäre ich für eine Info dankbar, das würde diesen Schritt überflüssig machen. Auf die Schnelle habe ich hier keine Lösung gefunden.)

6. Einen zweiten Knopf unter dem ersten anlegen und in der Knopfinformation "Knopf" als Typ ausgewählt lassen. Bei Titel "Ausführen" eingeben und bei "Knöpfe" "Befehl" ausgewählt lassen und ebenfalls "Ausführen" eingeben. Die Einstellung bei "Radioknöpfe und Einblendmenüs" ist egal.

Dieser Knopf führt somit das Skript "Ausführen" aus. Und dieses Skript macht nichts anderes als nachzuschauen was in Zelle A1 steht und startet dann das dort stehende Skript mit dem "do script"-Befehl.

Nun einfach im Einblendmenü ein Skript auswählen und auf den Knopf "Ausführen" klicken, schon wird das Skript gestartet.

Gruß,
Detlef

Re: Script-Start mit Einblendmenu

#8441 On 2 März, 2009 20:49 Hans-Jörg Steffes said,

Hallo Thomas und Detlef,

vielen Dank für die detailierten Lösungswege. Hab sie schon in mein
Formular eingebaut und es funktioniert bestens!

Viele Grüße,
Hans-Jörg

Am 02.03.2009 um 09:56 schrieb djschulz:

> Hallo,
>
> wenn es eine Möglichkeit gäbe ein Skript per Formel aufzurufen, wäre
> das sehr hilfreich hier (Wink an die Entwickler!).
>
> Wenn man es aber in Kauf nehmen kann mit zwei Knöpfen zu arbeiten,
> einem mit den Namen der Skripte, und einem normalen Knopf zum
> Ausführen, geht das auch wie im folgenden beschrieben.
>
> 1. In einem neuen leeren Ragtime Dokument 4 Skripte anlegen.
>
> Name des erstens Skripts: Skript 1
> Code: display dialog "Hiho"
>
> Name des zweiten Skripts: Skript 2
> Code: say "Hello RagTime"
>
> Name des dritten Skripts: Skript 3
> Code: beep 5
>
> Name des vierten Skripts: Ausführen
> Code:
> set mySkript to value of cell "A1" of table "Rechenblatt 1" of
> document 1
> do script mySkript
>
> 2. Auf einer leeren Layoutseite ein Knopfaufziehen.
>
> 3. In der Knopfinformation den Typ auf "Einblendmenü" stellen und
> als Titel eingeben:
> Skript 1
> Skript 2
> Skript 3
>
> 4. In der Knopfinformation bei "Radioknöpfe und Einblendmenüs"
> "Titel ist Resultat" auswählen und den Dialog schließen.
>
> 5. Ein kleines Rechenblatt neben dem Knopf aufziehen und in Zelle A1
> folgende Formel schreiben:
> Knopf 1!X
> Dieses Rechenblatt enthält immer den im Knopf ausgewählten Eintrag.
> (Wenn jemand einen Trick kennen sollte, wie man den ausgewählten
> Eintrag per AppleScript abfragen kann, wäre ich für eine Info
> dankbar, das würde diesen Schritt überflüssig machen. Auf die
> Schnelle habe ich hier keine Lösung gefunden.)
>
> 6. Einen zweiten Knopf unter dem ersten anlegen und in der
> Knopfinformation "Knopf" als Typ ausgewählt lassen. Bei Titel
> "Ausführen" eingeben und bei "Knöpfe" "Befehl" ausgewählt lassen und
> ebenfalls "Ausführen" eingeben. Die Einstellung bei "Radioknöpfe und
> Einblendmenüs" ist egal.
>
> Dieser Knopf führt somit das Skript "Ausführen" aus. Und dieses
> Skript macht nichts anderes als nachzuschauen was in Zelle A1 steht
> und startet dann das dort stehende Skript mit dem "do script"-Befehl.
>
> Nun einfach im Einblendmenü ein Skript auswählen und auf den Knopf
> "Ausführen" klicken, schon wird das Skript gestartet.
>
> Gruß,
> Detlef
>
>

Re: Script-Start mit Einblendmenu

#8446 On 3 März, 2009 10:24 Jürgen Schell said,

djschulz schrieb:
> Hallo,
>
> wenn es eine Möglichkeit gäbe ein Skript per Formel aufzurufen, wäre das
> sehr hilfreich hier (Wink an die Entwickler!)...
>

Hallo Detlef,

Im Ursprung hatte die Entscheidung Sicherheitsgründe. Ein AppleScript
hat beim Ablauf den Rechner mit den Rechten des eingeloggten Benutzers
unter Kontrolle. Ein "Formeltrigger" könnte ein bösartiges Script
bereits beim Öffnen eines Dokuments starten (so nach der Art: Wenn
Zufallszahl größer 0, lösche Festplatte).

Ob das Argument zieht, kann man natürlich diskutieren. Die Entscheidung
fiel, als Scriptviren in MS-Office-Programmen ein großes Thema waren.

Gruß, Jürgen

Re: Script-Start mit Einblendmenu

#8451 On 4 März, 2009 09:53 djschulz said,

Hallo Jürgen,

Das stimmt natürlich. Und ich erinere mich nun dunkel, das du sowas schonmal erwahnt hast.
Das wäre in der Tat ein großes Sicherheitsrisikio. Und Schädlinge über RagTime-Dokumente eingeschleust, das wollen wir ja alle nicht.

Gruß
Detlef