用語辞書よりもっと詳しい解説が見たい場合は各メーカーが提供しているリファレンスやガイドブックを見ます。
AdobeInDesignやAdobeIllustratorなどはスクリプトリファレンスやスクリプティングガイドなどがインストーラCDに入っています。リファレンスは用語辞書で命令方法やテキストフレームやカラーといったオブジェクトの指定方法や使えるプロパティを調べるのに役に立ちます。(英語の場合もあります。)スクリプティングガイドは初心者からAppleScriptを扱う解説が詳しく載っています。特にInDesignCS2のスクリプティングガイドは非常に丁寧に解説されており。サンプルも多数掲載されています。私自身も知らないことやあやふやなことがたくさん載っていて、まだまだ勉強しなくてはと実感させられます。このガイドをくわしく読むだけで十分AppleScriptの勉強になりますし、この原稿を読む必要もなくなるぐらいです(笑)
04)アプリケーションコントロールの最近のブログ記事
get propertiesでtext frameのプロパティをいろいろ変更できました。ではtext frameを作成するのにはどうすれば良いでしょう。これにはコマンドを使います。用語辞書のCore Suiteのコマンドにmakeがあります。
make: Make a new element make new type class -- the class of the new element. at location reference -- the location at which to insert the element [with data anything] -- the initial data for the element [with properties record] -- the initial values for the properties of the element Result: reference -- to the new object(s)
makeというコマンドの次の行にnew type classとありさらに次にat location referenceとあります。これは
make new 作りたいオブジェクトのクラス at 場所
という書き方になります。その後の[]でくくられている部分は省略可能です。Resultにreferenceとありますがこれは返り値で新しく出来たオブジェクトが返ってきます。では作りたいオブジェクトのクラスですが、先ほどget propertiesで調べたtext frameクラスを渡してみましょう。場所は最前面につくるのならbeginningでいいでしょう。
tell application "Adobe Illustrator" tell document 1 make text frame at beginning end tell end tell
ぽつんと小さなオブジェクトが出来ました。これがスクリプトから作成したtext frameです。さきほど省略したwith propertiesを使ってみましょう。with properties recordと書いてあるのでwith properties {○○:〜〜}という使い方になります。text frameのプロパティは先ほど調べました。その中でcontentsを使ってみましょう。
tell application "Adobe Illustrator" tell document 1 make text frame at beginning with properties {contents:"あああ"} end tell end tell
ほかにもコマンドには
close: --ドキュメントを閉じる close document 1 saving no--保存せずに count reference -- オブジェクトの数を数える count taxt frames delete: -- オブジェクトを消す delete text frame 1 duplicate: --複製する duplicate text frame 1 to end exists: --オブジェクトが存在するか? if exists text frame 1 then〜end if move: --オブジェクトを動かす move text frame 1 to end of layer 1 open: --ファイルを開く open alias "Macintosh HD:test.ai" save: --ファイルを保存する save document 1 in file "Macintosh HD:test.ai" as Illustrator
などがあります。まだまだ他にもいろいろありますので後述します。
AppleScriptからアプリケーションをコントロールするときは用語辞書を見て使えるコマンドやセットできるプロパティを調べます。
用語辞書を見るにはまずスクリプト編集プログラムのウィンドウメニューからライブラリを選びます。ライブラリウィンドウ上部の+ボタンをクリックしてInDesignやIllustratorを選択します。ライブラリウィンドウに登録されたらダブルクリックしてください。用語辞書が開きます。
試しにAdobe Illustrator Suiteのクラスでtext frameを見てみましょう。
Class text frame: Text frame item Plural form: text frames Elements: character by numeric index, as a range of elements, before/after another element, satisfying a test insertion point by numeric index, as a range of elements, before/after another element, satisfying a test line by numeric index, as a range of elements, before/after another element, satisfying a test paragraph by numeric index, as a range of elements, before/after another element, satisfying a test text by numeric index, as a range of elements, before/after another element, satisfying a test word by numeric index, as a range of elements, before/after another element, satisfying a test Properties: <Inheritance> page item [r/o] -- subclass of page item properties record -- all of this object's properties returned in a single record anchor list -- the position of the anchor point (start of base line for point text) column count integer -- the column count in the text frame (area text only) column gutter real -- the column gutter in the text frame (area text only) content variable anything -- the content variable bound to this text art item contents Unicode text -- the text contents of this text frame end T value real -- the end position of text along a path, as a value relative to the path's segments (path text only) flow links horizontally boolean -- Flow text between linked frame horizontally first. (area text only) kind area text/path text/point text [r/o] -- the type of a text frame item matrix matrix [r/o] -- The transformation matrix of the text frame object next frame text frame -- the linked text frame following this one optical alignment boolean -- is the optical alignment active? previous frame text frame -- the linked text frame preceding this one row count integer -- the row count in the text frame (area text only) row gutter real -- the row gutter in the text frame (area text only) selection a list of text [r/o] -- the selected text (ranges) in the story spacing real -- the amount of spacing (path text only) start T value real -- the start position of text along a path, as a value relative to the path's segments (path text only) story story [r/o] -- the story of the text frame text orientation horizontal/vertical -- the orientation of the text in the frame text path text path [r/o] -- the path for the text frame (area and path text) text range text [r/o] -- the text range of the text frame
大量にでてきますが--より右に書いてあるのが解説です。
Elementsは要素です。character(キャラクター)が書いてありますが、text frameの要素にcharacterがあるということです。これをスクリプトにすると下記のようにさらに深い階層になります。characterの用語辞書はText Suiteに書かれています。
tell application "Adobe Illustrator" tell document 1 tell text frame 1 tell character 2 get properties end tell end tell end tell end tell
Propertiesがプロパティですね。この値を変更することによって、Illustratorを操ることが出来ます。
contents Unicode text -- the text contents of this text frame
はプロパティcontentsの値はユニコードテキストだということと、--以下の説明をみるとtext frameの内容だということがわかります。
row count integer -- the row count in the text frame (area text only)
というのはrow count(段組みの段数)がinteger(整数)で返ってくることがわかります。 [r/o] と書いてあるのはread onlyのため変更することは出来ません。
kind area text/path text/point text [r/o] -- the type of a text frame item
kindというのは種類でarea textかpath textかpoint textで値が返ってきます。テキストボックスを作ればarea textでクリックして文字を作ればpoint textで、ベジェ曲線に沿うようなのはpath textです。こちらも[r/o]なので変更不可です。(実はIllustrator10では変更できましたが変更すると変な形になっていました。)