在安裝了多個InDesign的情況下,ScriptEditor會盡力確定腳本應運行在哪個版本上。不過,我正在幹我的腳本,這樣我只需在整個腳本中更改應用程序名稱一次。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
編輯:在該遊戲結束是我是希望將一些InDesign功能抽象到我自己的類中,如下所示:
InDesign.scpt - a類抽象的InDesign功能
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.scpt上述
set InDesign to (load script file ("my:path:to:scripts:" & "Indesign.scpt"))'s new()
InDesign's _open("my:path:to:indd:file.indd")
這是一個很好的機會,上面是不是真的有可能在的AppleScript和的ObjectiveC是我應該正在尋找做這種類型的事情。然而,似乎某些事情確實像「tell _application()打開路徑」,但「tell _application()打開路徑而不顯示窗口」不行。
這似乎是一個編譯問題,用於引用對象以外的對象。奇怪的是,如果屬性或命令不止一個單詞,它就不能編譯。如果屬性/命令是一個單詞,則編譯並因此執行成功。 – spyle 2012-02-21 19:46:01
可以使用'運行腳本'([見這篇文章](http://www.mactipper.com/2008/10/run-applescript-in-applescript.html)),但代碼看起來很糟糕,然後會很難調試。 – spyle 2012-02-21 19:47:34