Illustratorの配置画像を一括で収集するAppleScript【ドロップレット版】

こんにちは、スクリプト担当Fです。

前回はIllustratorのドキュメントを開いてファイルメニューから選択したスクリプトで配置画像を収集する方法についてのお話でした。今回は、同じ配置画像収集でもIllustratorを読み取るだけで収集するドロップレット版について書いてみようと思います。

● Illustratorの中身

Illustratorのリンクファイルについての情報がどこに記述されているかというと、「ファイル」メニュー→「ファイル情報」にあります。

タブがたくさんありますが、右端から2つめの「詳細」タブをみると、いろいろなプロパティをみることができます。この中の「XMP メディア管理プロパティ/xmpMM:Manifest」にはさらにstMfs:referenceという階層があり、stRef:filePathと分類されています。これがドキュメントに配置されたファイルパス情報です。POSIX形式のパスで格納されています。
「ファイル情報」タブの右端「Rawデータ」をみると未整理の生データが記載されており、よくみるとXML形式であることがわかります。
つまり、XMP情報から

<xmpMM:Manifest><stMfs:reference><stRef:filePath>●●●●</stRef:filePath></stMfs:reference></xmpMM:Manifest>

この●●●●の部分を取得すればいいのです。

● XMPの解析

さて、XMPの取得は一体どうすればいいのでしょうか? Adobeのヘルプをはじめネットには様々なリソースがあり、一般的にはExternalObjectやXMPScriptライブラリを使用するようですが、ちょっと違ったアプローチを考えました。
sedコマンドでIllustratorの中を読み込み正規表現で上記タグを取得する方法です。

● sedで読み取る

AppleScriptではシェルコマンドを実行することが可能です。ドラッグされたファイルをsedに渡して上記タグを取得すればIllustratorを起動する必要もありません。
コマンドをターミナルで実行する場合は下記のようになります。

sed -n -e ‘/<x[am]pMM:Manifest>/, /<\/x[am]pMM:Manifest>/p’ (ファイルパス)| sed -n -e ‘s/^.*<stRef:filePath>\(.*\)<\/stRef:filePath>/\1/p’

sedはオプションの -n とフラグpを付与することでマッチする指定行を表示します。
これで、ファイルパスの文字列のみを取得することができます。ファイルパスさえ取得できればあとは一つのフォルダにコピーするロジックを考えるだけです。

● 指定フォルダへコピー

スクリプトはIllustratorファイルをドラッグするとダイアログがあらわれて指定したフォルダに画像をコピーする仕様となっています。ただし、XMPに記述されたファイルパスに必ず配置画像があるとは限りません。もし存在しない場合はIllustratorファイルと同階層に配置画像があるかどうか確認する必要があります。同階層にも配置画像がない場合は処理終了後に見つからないファイルの名前をダイアログで表示します。

Illustratorを使用せず、ドラッグするだけで配置画像を収集するというのはなかなか不思議な感じがしますが、入稿やデータを他人に渡す際にお役にたつのではないでしょうか? 弊社のサイトから無料でダウンロードできますのでぜひお使いになってみてください。

XMPはAdobe Systems, Inc. の米国及びその他の国における商標です。