【解放区在住氷翠 緑の閃光】氷翠のお気楽日記

はじめてのAutomator

2019-05-19 18:25

お仕事 > 開発

はい、どうも氷翠です。

今回は急遽、お仕事で使うアプリケーションの依頼がきました。あ、自分の会社のです。

内容は、EPSの画像をJPEG化して、PDFに変換するというものです。

作業自体は至って簡単なもので、自分でやるならもちろんすぐにできるので、いいのですが、作業する人はパソコンの操作が苦手な人がやっている。そして、目的はメールでPDFがほしいとお客様に言われるそうです。
ということで、ファイルをドラッグするだけでPDFに変換する自動化プログラムを開発することになりました。

最初に氷翠はIllustratorのスクリプト機能を利用した自動処理。体系はJavascriptです。これを利用することを考えました。
ところが、別のPCではこれが動かなかった…orz
で、PDFにしたときも、それほどの圧縮率ではなかった。やはりIllustratorだけではそれほど大きな圧縮率にはならないようだ。

ということで、会社にいる上司で、Mac使いの方に相談したところ、やはりAutomatorを利用したほうがいいだろう。という話になり、Automatorでの開発に乗り出したわけです。

今まで氷翠はAutomatorの使い方がいまいち理解できなくてやる気が起きなかったのだけど、今回は本気でやってみると、ついに理解することができたわけです。

なんとも奇妙な画面である。左側にある項目を右の作業領域にドラッグするだけでプログラムが組めるというものなのだから。

で、本日、3日目にして完成したのだ。

では、一番できなかったところを以下に。

JPEGに変換して、PDFに変換するだけなら、すんなり出来ました。
ファイルのパスが通っていれば、それほど難しい問題ではなかったのです。

ところが、ファイルをドラッグして利用するのですから、そのパスを使って、オリジナルと同じフォルダの中で保存するようにしたい。そして、ファイル名も拡張子を変えただけの状態にしたい。
これが難しかった。

家でテスト用として考え、作成中の画面です。
ファイルをドラッグするとか、項目をドラッグするとかだけでほとんどの作業ができます。

で、先に言ったように、同じフォルダの中でPDFを保存したいので、変数を設定することにしたのです。
「フルパス」「パス」「ファイル名」という3つの変数です。
そのためには、テストしていかないといけません。

まずは上の様にテスト用の画像を用意し、プログラムの中に組み込みました。なんせテストなのに、何度もドラッグするのは面倒だったのでw

とりあえず、これだけで実行するとこんな感じで結果が表示されます。非常に便利♪

ファイル名のフルパスを取得するため、今回は「シェルスクリプトを実行」というのを利用しました。
実際、今まで実験していて、いろんな方法があったのですが、今回はこれを利用することにしました。
で、ここまでを実行してみると、結果のところにフルパスが表示されているのがわかります。

左にあるライブラリの中から「変数の値を設定」というものをもってきます。で、「変数」のところで、「新規変数」とかってあるので、ここで新しい変数を作成します。今回は「フルパス」とします。これでこの変数の中にフルパスが代入されたことになります。

次は「パス」です。つまり、フルパスの中からファイル名を除いた状態のものです。ということで、再びシェルスクリプトを実行します。
今回はフルパスの中からパスを取り出すので「echo `dirname “$1”`」としました。

先ほどと同じように変数を設定します。

次にファイル名を変数に入れておきたいのですが、上のように、出力してみると、パスしかありません。

ということで、フルパスを呼び出してみました。
ところが、二つになっています。どうやら、この「流れ」の部分は配列変数のようで、このまま取り出そうとしても最初のパスの部分を処理することになるので意味がありません。

まあ、単純な話でした。上の画像をみたらわかりますが、「$1」の部分を「$2」にしてあげれば次の内容が取り出せるわけなんです。

これを「echo `basename “$2”`」とかで出力してあげて、変数「ファイル名」にセットしてあげればいいわけです。
あとは、パスを利用して、PDFを作成。
このとき、パスは変数を利用することができますが、ファイル名は変数を利用する事ができないので、ダミーのファイル名をつけておき、あとでファイル名を変更するという、強行突破をします。

何にしてもこれで一通りできあがったので、別のPCで動くかどうかの検証を明日会社でやるだけです。

まぁ、このあと、氷翠は別の自動化のプログラムを組んでいたことは言うまでもない。

コメントを残す

メールアドレスが公開されることはありません。