読者です 読者をやめる 読者になる 読者になる

ごんれのラボ

iOS、Android、Adobe系ソフトの自動化スクリプトのことを書き連ねています。

ファイル名を置換してリンク

みなさんはこんな経験がありませんか?

「サ-バーで使えない記号がファイル名に使用されているファイルが10,000ファイル以上入稿された」

「OS9時代の名残で拡張子なしのEPSファイルが10,000ファイル以上入稿された」

「リネームして貼り替えたいけど10,000ファイル以上あるから投げ出したい」

たぶん制作会社の人なら一度や二度は上記のような目にあったことがあるはず。

ええ、私もあいました。

データをもらって中を見た瞬間「うん、ファイル名についてはみなかったことにしよう!」と思いましたとも。

でも、サーバーにコピーできないファイル名があってね、そういうわけにもいかなくてね。

そこでわたくし考えました。

こんなときこそスクリプト!

そう、このときのためにわたくしはスクリプトを学んできたのです!(拡大解釈)

とりあえず動画公開。

最初はRubyでファイル名の処理だけしようと考えました。

テキスト置換はそれなりにできるようになっていたので、ひとまずファイル名を取得して、trなりgsubなりで置換すればいいよねって感じで。

半角カナから全角カナはNKF使って適当に置換。

これで大枠完成。

あとはメソッドにしてあとで修正や流用がきくようにリファクタリング。

Ruby楽しー。

ここまでで構想から1日経過ぐらい。

このRubyを使えばファイル名の置換はすぐ終わるけど、そのあと地獄のリンクし直し作業が待っている。

その作業はオペに任すつもりだけど、絶対貼り間違える自信がある。

だって10,000ファイルあるんだぜ?

なので、まだスタートまで時間があったので、このRubyをInDesignと絡めて自動で貼り込み直しができるようにすることにした。

InDesignで画像関係の処理をほとんどしたことがないので、AppleScript辞書を眺めつつ、思考錯誤。

まずRubyに配置ファイルのパスを渡さないといけないので、そのパスを抜かないといけない。

で、ついでにinddファイルの親階層とか配置ファイルの名前とかいろいろ抜いてく。

続いてそのパスをRubyに渡してファイル名の置換処理をさせる。

その結果として置換後のパスを戻してAppleScriptに戻す。

そして配置ファイルの親フレームに置換後のパスを渡して貼り込み直す。

同名のファイルが複数貼り込まれていることを予測して、パスの比較をして、2つ目以降のファイルは置換後のファイルを貼り込み直すようにした。

構想から一週間ぐらいで運用開始できたんだけど、自分でいうのもなんだけど、これすごくいいわ。

置換ルールは自分で決められるし、貼り込みを間違えるリスクはほぼゼロ。

ポチっっとAppleScriptを起動すればそれなりに時間はかかるけど、ファイル名の整理からinddの更新まで勝手にやってくれる。

別の案件でも拡張子がないQx時代のファイルが山ほどきたんだけど、このスクリプトで瞬殺できた。

ちなみに拡張子を決めうちで付加して再リンクするだけならRubyは使わないで、AppleScriptだけでできます。

30行ぐらいで書けた。

いまはIllustratorで同じことができないか構想中。

貼り替えだけなら実はもう書けているので、あとはRubyと絡ませるだけ。

と、すごい宣伝しているけど、公開はしません。

出し惜しみ。

というわけでもなく、業務としてがっつり時間をかけて書いたものなので、公開はできないなーと。

普段公開しているのは休日に趣味で書いているものがほとんどなので。

一応ヒントとして思考フローを書いておいたので、自分でチャレンジしてみるといいと思います。

そんなに難しいことしてませんし。

興味がある人は勉強会などで声をかけてくれればデモします。