7月 10, 2011
kamata

InDesigh JavaScriptのプログレスバーをAppleScriptで呼び出す

InDesignのSDKに、ScriptUIの箇所で、プログレスバーのJavaScriptサンプルがあります。これをAppleScriptでルーチン化してみました。下記の参考スクリプトは新規ドキュメントを作り、100ページ新規追加していきます。
こちらのサンプルムービーで、処理状況をご覧いただけます。

参考スクリプト
tell application “Adobe InDesign CS4″
activate
my doProgressBar() –スクリプトバー初期化
–ドキュメント作成
set myDocument to make document

my doProgressBarOpen(100) –スクリプトバーOpen

repeat with myCounter from 1 to 100
my doProgressBarRoop(myCounter) –スクリプトバーRoop
–ページ追加
tell myDocument to make page
end repeat

my doProgressBarClose() –スクリプトバーClose

delay 1
–保存しないで閉じる
close myDocument saving no

end tell

on doProgressBar()
set myJavaScript to ”
#targetengine \”session\”;
var myMaximumValue = 300;
var myProgressBarWidth = 300;
var myIncrement = myMaximumValue/myProgressBarWidth;
myCreateProgressPanel(myMaximumValue, myProgressBarWidth);

function myCreateProgressPanel(myMaximumValue, myProgressBarWidth){
myProgressPanel = new Window(‘window’, ‘myProgressBar’);
with(myProgressPanel){
myProgressPanel.myProgressBar = add(‘progressbar’, [12, 12,myProgressBarWidth, 24], 0, myMaximumValue);
}
}”
my doJavaScript(myJavaScript)
end doProgressBar

on doProgressBarOpen(maxValue)
set myJavaScript to ”
#targetengine \”session\”;
myCreateProgressPanel(” & maxValue & “, 300);
myProgressPanel.show();”
my doJavaScript(myJavaScript)
end doProgressBarOpen

on doProgressBarRoop(myCounter)
set myJavaScript to ”
#targetengine \”session\”;
myProgressPanel.myProgressBar.value = ” & myCounter & “/myIncrement;”
my doJavaScript(myJavaScript)
end doProgressBarRoop

on doProgressBarClose()
set myJavaScript to ”
#targetengine \”session\”;
myProgressPanel.myProgressBar.value = 0;
myProgressPanel.hide();”
my doJavaScript(myJavaScript)
end doProgressBarClose

on doJavaScript(theScript)
tell application “Adobe InDesign CS4″
do script theScript language javascript
end tell
end doJavaScript

1 Comment

  • 肝心なことを記入漏れしてることに気づきました〜。
    Preferences > Adobe InDesign > Version X.0-J > Scripts にStartup Scriptsフォルダを作り、
    その中にtargetengin.jsx の名称で下記ファイルを入れてください。

    #target indesign
    #targetengine “session”
    //Because these terms are defined in the “session” engine,
    //they will be available to any other JavaScript running
    //in that instance of the engine.
    var myMaximumValue = 300;
    var myProgressBarWidth = 300;
    var myIncrement = myMaximumValue/myProgressBarWidth;
    myCreateProgressPanel(myMaximumValue, myProgressBarWidth);

    function myCreateProgressPanel(myMaximumValue, myProgressBarWidth){
    myProgressPanel = new Window(‘window’, ‘myProgressBar’);
    with(myProgressPanel){
    myProgressPanel.myProgressBar = add(‘progressbar’, [12, 12,
    myProgressBarWidth, 24], 0, myMaximumValue);
    }
    }

Leave a comment