連載[7-2] QuarkXPressスクリプティング入門
|
《
貼り込んだ画像のファイル・パスを取り出す 》
|
|
|
先生
|
そう! さすがQuarkXPressの専門家だ。辞書の中で、あるクラスの要素(Elements)として記載されているものは、それが中に含まれているってことなのさ。 |
|
」
|
でも、そういう情報って,辞書にあるクラスを1つひとつ調べていかないと分からないんですか。 |
|
先生
|
残念ながらそれしか手がない。まぁ今日は特別に、ちょっと分かりやすく図解してあ げよう。 tell application "QuarkXPress" |
|
図4 QuarkXPressのクラス階層構造とプロパティーの例
![]() |
|
|
、
|
書類の中に画像ボックスがあって、その中に画像があって、そのファイル・パスを取り出しているわけですね。 |
|
先生
|
そうそう、では次に「image」クラスの辞書を見てみよう(図5)。
|
|
図5 QuarkXPressのimageクラス
![]() |
|
|
」
|
あっ、file pathというのがimageクラスのPropertiesのところにありますね。 これって、ひょっとして貼り込んだ画像のファイルですか。 |
|
先生
|
ご名答! |
|
、
|
Propertiesというのは確か… |
|
」
|
オブジェクトの「属性」、すなわちあるクラスのオブジェクトの性質を表すものですよね。「武士」がクラスなら「刀」は要素で「流派」は属性。刀は何本も持てる持ち物だけど、流派は武士の性質を表すものですから。 |
|
先生
|
よく覚えていたねぇ、そんな例えを。その通り。file pathは画像に含まれるものではなく、その性質/特徴として定義されているわけだ。 ここで注意したいのは要素(Element)を指示するのも、属性(Property)と同じように、「of」を使うことなんだ。つまり、「document 1 の image 1のpath name」 という具合にね。日本語でも「の」を使うだろ。 |
|
、
|
QuarkXPressの場合でも、要素とか属性とか、要するにクラスという形でデータがモデル化されている点は、ファイルメーカーProやFinderなどと同じですね。 |
|
《 画像ファイルをFinderでバックアップ・コピー
》
|
|
|
、
|
そのう、file pathという要素を取ってくれば画像ファイルをあっちこっち探さなくて済むのは分かるんですが、わざわざAppleScriptを使わなくてもできますけど…。 |
|
先生
|
さすがプログラミングの素人さん! 本質が分かってないね? データをAppleScriptのプログラムの中に取り込めると言うのが重要なんだよ。今までの連載を見てくれれば、取ってきたファイル・パスを使っていろいろなことができそうだと思わないかい? 例えばこんな具合に。 tell application "QuarkXPress" to set fPath to file path of image 1 of picture box 1 of document 1 tell application "Finder" to copy file fPath to folder "PROJECT1"of disk "BACKUP" |
|
」
|
これは、QuarkXPressから得たファイル・パスをFinderに渡して、ファイルをほかのディスクにコピーするスクリプトじゃないですか。 |
|
先生
|
そう、図2のデモも基本的にはこういう仕組みなんだ。ファイル・パスを一覧表にするなどいろいろ複雑なことはやってるけど、種を明かせばこんなことなんだよ。 |
|
、
|
そうかぁ、必要な画像ファイルをまとめたり、ファイル名を統一的に付け替えたり、いろいろ応用が利きそうですね。 |
|
先生
|
そこがAppleScriptの強味だ。ほかのアプリケーション、例えばファイルを処理するならFinderだけど、これらと連携できるのが強いところなんだね。 |
|
」
|
repeat文を使って、似たような処理を何度も繰り返すこともできますもんね。 |
|
先生
|
そうだ。では次に、repeat文で画像を連続処理する例を見てくれたまえ(図6)。 |
|
図6 QuarkXPressに貼り込んだ画像の情報を得るスクリプト
|
|
|
《 画像のサイズや回転角度も自由自在
》
|
||||
|
」
|
ちょっと動かしてみていいですか。あれっ、こんなダイアログ・ボックスが表示されました。 「OK」をクリックすると、次々に内容が変わっていきますね。 |
|||
![]() |
||||
|
先生
|
ここでは、書類の1ページ目にあるすべての画像ボックスについて、貼り込まれた画像ファイルのパス名と、ボックスのサイズ、画像の角度を表示してみた。imageクラスの属性であるfile pathとbounds、angleを単に取ってきているだけだけどね。 | |||
|
||||
|
」
|
countっていうのは数えるコマンドでしたっけ。 count every picture box of page 1 of document 1 | |||
|
先生
|
そう、ここでは、document 1のPage 1に含まれるpicture box(画像ボックス)を数えているんだね。そこで、その数を元にしてrepeat文を使うというわけだ。 | |||
|
、
|
さらにこれをすべてのページについて繰り返す、なんてこともできますか | |||
|
先生
|
もちろん、repeatを二重にするだけでいい。 | |||
|
、
|
だいぶん面白くなってきました。 | |||
|
先生
|
おや、まだ“だいぶん”かい?? | |||
|
、
|
いや、だいぶ仕事への活用が見えてきたからです。これで徹夜は免れそうな気がしてきました。 | |||
AppleScript救急隊事務局(ASQs) info-asqs@fsight.co.jp