InDesignが複数インストールされている場合、ScriptEditorはスクリプトを実行するバージョンを知りたいと考えています。しかし、私は私のスクリプトの中でアプリケーション名を一度変更するだけで済むようにスクリプトをDRYしたいと思っています。AppleScriptで変数にアプリケーションを割り当てる
似たような質問がありますが(Applescript path to application using variable)、これはすべてでは機能しません。問題は、なぜこれはすべてのために機能しないのですか?
予想通り、次の作品:
tell application "Adobe InDesign CS5.5"
log name --"Adobe InDesign CS5.5.app"
log full name --"Mactastic:Applications:Adobe InDesign CS5.5:Adobe InDesign CS5.5.app:"
end
少し乾燥作用:
set v to "Adobe InDesign CS5.5"
set a to application v
log name of a --"Adobe InDesign CS5.5"
log full name of a
--SYNTAX ERROR: Expected end of line, etc. but found property
--"name" is highlighted in the ScriptEditor
ここでは、期待どおりに動作別の例である:
set f to (choose file)
tell application "Adobe InDesign CS5.5"
open f without showing window
end tell
はしかし、これはに失敗します前のようにコンパイルしてください:
set f to (choose file)
set v to "Adobe InDesign CS5.5"
set a to application v
tell a
open f without showing window
end
--SYNTAX ERROR: Expected “given”, “with”, “without”, other parameter name, etc. but found class name.
--"window" is highlighted in the ScriptEditor
私の環境:
- OSX 10.6.8
- ScriptEditor 2.3(118)
- のAppleScript 2.1.2
EDIT:この内のエンドゲームは、私がいたということですInDesignの機能のいくつかを自分のクラスに抽象化したいと考えています。
InDesign.scpt - a
on new()
copy me to self
--do some initializing
return self
end new
on _version()
return "Adobe InDesign CS5.5"
end _version
on _application()
return application _version()
end _application
on _open(path)
tell _application() to open path without showing window
end _open
my_script.scpt InDesignの機能を抽象化クラスは - どこがすべきことは、上記のAppleScriptとObjectiveCで実際には不可能であることを良いチャンスがあります
set InDesign to (load script file ("my:path:to:scripts:" & "Indesign.scpt"))'s new()
InDesign's _open("my:path:to:indd:file.indd")
の上に抽象化されたInDesign.scptを使用していますこの種のことをすることを探している。しかし、ある種のことは、 "_application()でパスを開く"のように動作しますが、 "_application()にウィンドウを表示せずにパスを開くように指示する"のようには動作しません。
これは、tellブロック以外のオブジェクトを参照するためのコンパイル上の問題です。奇妙なことに、プロパティまたはコマンドが複数の単語である場合、コンパイルに失敗します。プロパティ/コマンドが1ワードの場合、コンパイル、したがって実行は成功します。 – spyle
「実行スクリプト」([この記事を参照](http://www.mactipper.com/2008/10/run-applescript-in-applescript.html))を使用することができますが、コードはひどく見えますデバッグは難しい。 – spyle