Suchen / SearchNavigation |
AppleScripts im Script Editor und RagTime: Terminologiekonflikte2 Sep 2011 - 07:34 Bei einem Vorschlag, wie man ein bestimmtes Problem in RagTime mit AppleScript lösen kann, ist mir im RagTime-Forum ein Fehler unterlaufen (dort inzwischen korrigiert). Das kommt vor, aber in diesem Fall ist der Fehler interessant und ein wenig Diskussion dazu lohnt sich für RagTime-Scripter. Es geht um die Frage, wo AppleScript beim Kompilieren eigentlich die Begriffe sucht. Die Frage im Forum war: Wie kann man in RagTime einen Zeitstempel in Text oder Tabellen setzen, ohne dass zugleich ein Format gesetzt wird. Die Anweisungen im Bearbeiten-Menü erzeugen alle sowohl eine Formel als auch ein Format. Folgendes war meine ursprüngliche Script-Fassung: set n to current date tell application "RagTime 6.5" tell window 1 set s to selection as reference tell s set sylk formula to my sylk_string(n) end tell end tell end tell on sylk_string(d) set sd to (day of d) as text set sm to ((month of d) as integer) as text set sy to (year of d) as text set sHour to (hours of d) as text set sMin to (minutes of d) as text set sSec to (seconds of d) as text return "DATE(" & sy & "," & sm & "," & sd & "," & sHour & "," & sMin & "," & sSec & ")" end sylk_string Das Script läuft ohne Probleme vom Script Editor aus: Man setzt in RagTime eine Einfügemarke in Text oder wählt eine Rechenblattzelle aus, sobald dann das Script läuft, wird der aktuelle Zeitpunkt in RagTime als Formel eingesetzt. (Grundtechnik des Scripts: Aus dem aktuellen Zeitpunkt, den Kopiert man aber das Script in den RagTime Script-Editor, um es dort zu installieren, gibt es einen Fehler beim Kompilieren: »Hours of d“ kann nicht gelesen werden. Zugriff nicht erlaubt. Es geht hier ausschließlich um den Handler, der den String für die SYLK-Formel erzeugt. Hier kommen AppleScript-Termini wie Kompiliert man das Script im Script-Editor, ist das kein Problem. In der Kette der Programme, die hier nach den Termini gefragt werden, kommt RagTime nicht vor. Sobald man das Script aber in RagTime zu kompilieren versucht, kommt es zur Fehlermeldung. Innerhalb von RagTime kommt für AppleScript die Terminologie dieses Programms zuerst, und dort werden die Termini anders benutzt. Man kann das Verhalten auch im Script Editor erzwingen. Hier ein geänderter Handler: on sylk_string(d) using terms from application "RagTime 6.5" set sd to (day of d) as text set sm to ((month of d) as integer) as text set sy to (year of d) as text set sHour to (hours of d) as text set sMin to (minutes of d) as text set sSec to (seconds of d) as text return "DATE(" & sy & "," & sm & "," & sd & "," & sHour & "," & sMin & "," & sSec & ")" end using terms from end sylk_string Diese Variante kompiliert auch im Script Editor nicht mehr. Mit dem In dem Fall der Forumsdiskussion schien mir die Lösung am einfachsten, die Termini hours, minutes und seconds aus dem Script zu beseitigen. Ich hab sie durch eine Sequenz von So einen einfachen Weg gibt es nicht immer. Der allgemeine Trick steckt wieder in Folgende Variante des ursprünglichen Scripts kompiliert und funktioniert auch in RagTime: on sylk_string(d) using terms from application "Finder" set sd to (day of d) as text set sm to ((month of d) as integer) as text set sy to (year of d) as text set sHour to (hours of d) as text set sMin to (minutes of d) as text set sSec to (seconds of d) as text return "DATE(" & sy & "," & sm & "," & sd & "," & sHour & "," & sMin & "," & sSec & ")" end using terms from end sylk_string In diesem konkreten Fall kann man statt
|
RagTime-LinksRagTime-Experts |