AppleScript 救急隊

The ForeSight Inc. AppleScript救急隊 ASQsについて Download (サンプル&デモ)


ビジネスで有効活用を目指す

われらがAppleScript救急隊


MacPower誌




Vol.8 DTP スクリプティング(1)

AppleScript救急隊の連載がMacPower誌上で始まって、すでに半年が過ぎた。そろそろこれまでのような個別のテーマから、多くの読者が期待している(と筆者が想像している)DTP用途での実践的なスクリプトの話に入ることにする。


Photoshopを自動操縦してみよう

一般的にDTP用途でスクリプティングといえばQuarkXPressという印象が強いと思う。QuarkXPressはAppleScriptへの対応度が非常に高く、スクリプティングに習熟していればさまざまな操作を自動化することが可能だ。
しかしその一方、QuarkXPressが多様なオブジェクトを複雑な階層構造でもっているため、スクリプトの記述は結構難しい。そこで救急隊としては、手始めにPhotoshopから入ることにする。
エエッ、だってPhotoshopってほとんどAppleScriptが使えないじゃない、と早合点してはいけない。
実は、Photoshopはバージョン3.0の時代からAppleScriptでコントロールすることが可能だったのだ。
その極意のネタが「PreFab Player[*1]」。このツールを使えば、PhotoshopやIllustratorだけでなく、大半のAppleScript非対応のアプリケーションが制御可能になる。しかも、PreFab Playerの凄いところは、QuicKeysやTempo IIなどのキー・マクロとは異なり、AppleScript自体の機能を拡張し、その中でAppleScript非対応のアプリケーションを制御してしまうところだ。つまりユーザーは、QuicKeysなどの操作や設定を覚える必要はなく、単純にAppleScriptだけですべての処理が完了できることになる。もちろんPreFab PlayerはQuicKeysやTempo IIなどとの共存も可能だ。
次のスクリプトを見てほしい 。
これは、Photoshopで開いているファイルをEPS形式の別名で保存するスクリプトだ(図1)。


図1 Photoshopで開いている画像を、EPS形式で保存するところ

tell application "Adobe Photoshop(R) 4.0J"
activate
tell application "PreFab Playerェ"
do menu menu item "別名で保存" of menu "ファイル"
do menu popup item "Photoshop EPS" of popup "ファイル形式"
type enter
do menu menu item "閉じる" of menu "ファイル"
end tell
end tell


このうち、do menuとtype enterの2つがPreFab Playerの命令だ。
do menuという命令は、ファイルメーカーの回に紹介したメニューに対する命令とほぼ同一だと考えていい。
では、保存するファイル名に拡張子[*2](.eps)を付加してみよう。

type {down arrow, ".eps"}

という1行を、type enterという命令の前に加えればいい。PreFab Playerでは、type命令はキーからタイプされる文字列または修飾キーの名称を意味し、typeという命令をリスト形式で指定して連続処理させることもできる。

TOPへ

だってアクションがあるもん

ちょっと待ってよ。もしかしたらそんなことはPhotoshopのアクションでもできるんじゃない、とお考えのアナタ。
そう、そのとおり。もちろんPhotoshop 4.0のアクション機能を使えば、バッチ処理(繰り返し処理)の基本部分を簡単に自動記録することが可能だ。このアクションは実に素晴らしい機能で、Photoshopのさまざまな処理を簡単に自動記録できるばかりでなく、その実行速度も非常に速い(図2)。


図2 Photoshop 4.0のアクション機能

   

しかし、問題点や限界もある。例えばメニューによっては正常に記録されないものもあるようだし、状況によってはアクションのバッチで指定した保存先フォルダーを間違えてしまうこともある。以前、デスクトップにあるフォルダーを保存先に指定して数十枚の画像処理をやらせたら、デスクトップ中が画像ファイルのアイコンで埋まってしまったことがある。
 また保存するファイル形式に応じて、あらかじめ決められた大文字の英字で拡張子を自動設定できるが、ユーザーが任意に変更することはできない。そのうえ保存時に同名ファイルがあれば、もし書き換えてほしくなかったとしても黙って実行してしまう。小さな親切、大きなお世話と思う場合もあるだろう。
もちろん、メニュー項目やブレークポイントなどを挿入することである程度は対応できるが、やはり限界がある。
これらの限界とも関連するが、実際の業務で使うと、ユーザーによっては次のような壁にぶち当たる。
例えば、保存先のフォルダーに同名のファイルがあった場合、
そのファイルへの処理を自動的にキャンセルしたいときはどうしよう?
バッチ処理するフォルダー内に何種類もの形式のファイルがあるような場合はどうする?
独自の拡張子を付けたいときには?
ファイル形式によって処理内容や結果のファイル名を変える必要がある場合にはどう対応する?
あるいは、条件次第でいくつかのフォルダーに分類して保存したいことはないだろうか?
そのほかにもユーザーによってさまざまな「壁」があるだろうが、これらの本質的な原因は、Photoshopのアクションに「もし何々だったら」を普遍的に判断する機能がないことだ。だから、上記のような例外処理や条件判断処理には容易に対応できない。その代わり、アクションは単純で決まり切った作業を猪突猛進に片づけてくれる。
つまり、アクションは多様なバッチ処理を前提とした機能ではなく、クリエイターがよりクリエイティブな仕事に専念するための、単純なショートカット/マクロ機能だと割り切ったほうがいい。
従って「じゃあ、アクションで処理した結果をQuarkXPressとどう連動させるの?」とか、その他の拡張性の話になった途端に「プッツン」してしまう。

「PreFab Player」参上!

そこでPreFab Playerの出番となる。例えば、もし可能ならJPEG形式で、不可能ならEPS形式で保存したいとする。
その場合のスクリプトは、上記のスクリプトでファイル形式をPhotoshop EPSに指定する部分を以下のように書き換えればいい。

try
do menu popup item "JPEG" of popup "ファイル形式"
type {down arrow, ".jpg"}
 type enter
on error
do menu popup item "Photoshop EPS" of popup "ファイル形式"
type {down arrow, ".eps"}
 type enter
end try
type enter

最後のtype enterは、JPEGやEPSで保存した直後に表示されるダイアログを無視するための「OK」ボタンや、標準設定のボタンをクリックする命令だ。もし保存先に同名のファイルがあった場合、アクション機能と同様に書き換えるなら、上記のスクリプトに以下の行を追加すればいい(図3)。


図3 同名のファイルがあると、このダイアログを表示する。

ここでキャンセルをクリックした場合、下にある「別名で保存」のダイアログ上で、もう一度キャンセルボタンをクリックしないとスクリプトが止まってしまうことに注意

try
click button "入れ換え"
type enter
on error
end try

ここで使っているtryという命令はPreFab PlayerではなくAppleScript本来の命令で、「やってみてダメならon error以下を実行せよ」という意味だ。ファイルを書き換えない場合は以下のようになる。

try
if exists button "入れ換え" then
click button "キャンセル"
click button "キャンセル"
end if
on error
end try

最初のキャンセルは入れ換えのダイアログに、次のキャンセルは別名で保存のダイアログに対して、それぞれ実行される。Photopshop 4.0には保存の際に自動的に指定されたファイル形式に応じた拡張子を付ける機能があるが、前述のとおり、あらかじめ決められた文字列になってしまう。それを無視するには、PreFab Playerにtellした直後に次の命令を加えておく必要がある。さもないと、ファイル名が「.EPS.eps」のようになってしまうからだ(図4)。


図4 「ファイル」メニューの環境設定のダイアログで「ファイルの保存」を選び、拡張子の自動オン/オフ機能を指定する

ということで、今回仕上げたスクリプトについてはSampleScripts Vol.8を参照してほしい。次回はこのスクリプトを繰り返し処理させる本格的なバッチ処理に挑戦する。

[*1]

(株)フォーサイトが開発・販売している、AppleScript非対応のMac用アプリケーションをスクリプタブルにするためのツール。SampleScripts Vol.8の「ScriptMaticb1.0J」をインストールすると、30日限定の「PreFab Playerデモバージョン」が使用できる。

[*2]
拡張子
MS-DOSのファイルシステムで属性を表すために利用する、ファイル名の末尾3文字のこと。「README.TXT」「AUTOEXEC.BAT」「COMMAND.COM」などのように、「.xxx」形式で表現する。

TOP

AppleScript救急隊事務局(ASQs) info-asqs@fsight.co.jp

主催 株式会社フォーサイト   後援 アップルコンピュータ株式会社

(c)1996-2010 The ForeSight Inc. All rights reserved.
Appleは、米国アップルコンピュータ社の登録商標です。
AppleScriptは、米国アップルコンピュータ社の商標です。
その他記載の会社名・製品名・ソフトウェア名は一般にその会社の登録商標または商標です。