AppleScript ミニツール2つご紹介
Inomotoです。初投稿です。
今回は私が業務でよく使っているAppleScriptを二つ紹介します。
1 個別にZip.app
OSXになってから、Finderからcontrol+クリックでファイルをZip圧縮できるようになりました。
ただ、この機能では複数のファイルを選択したときに、まとめて1つのファイルに圧縮されてしまいます。
ときにはたくさんのファイルを一つ一つ個別に圧縮したい場合もありますので、そんなときに役に立つのではと思います。
[applescript]
—————————————
–Drag&Dropしたアイテムを一つずつ処理
—————————————
on open inItems
with timeout of (1 * 60 * 60 * 12) seconds
repeat with tgtItem in inItems
tell application "Finder"
set tgtItem to tgtItem as alias
zipIt(tgtItem) of me
end tell
end repeat
end timeout
end open
—————————————
–エイリアスを渡すとそのアイテムをZIP圧縮するルーチン
—————————————
on zipIt(tgtItem)
tell application "Finder"
–処理対象の名前を取得
set tgtName to name of tgtItem as Unicode text
set tgtName to quoted form of tgtName
–カレントディレクトリを取得
set tgtParent to parent of tgtItem as alias
set tgtParent to quoted form of POSIX path of tgtParent
set zipName to tgtName & ".zip" –zip名
–フォルダの中身を全て階層的に圧縮
do shell script "cd " & tgtParent & " ; " & "zip -r " & zipName & " " & tgtName
end tell
end zipIt
[/applescript]
2 Dropしたファイルを指定したプログラムで処理.app
お客様からいただいたテキストファイルを使用する際、そのまま何もせずに使えることは稀です。大概の場合は何らかの処理が必要になります。
私はそのようなときには大概perlを用いて処理するのですが、perlを使いたい場合はターミナルを開いてコマンドラインから入力しなければならず、私のような面倒くさがりにはちょっと敷居が高い作業です。
このスクリプトをアプリケーション形式で保存すると下記の2手順でperl処理が行えます。
・処理したいファイルをまとめてDrag&Dropする
・どのプログラムで処理するかダイアログで指定
procFileの『do shell script “perl “』の『perl 』の部分を書き換えるとrubyやPHPなどでもできるのかなぁと思っていますが、まだ試していません。
[applescript]
on open inFiles
tell application "Finder"
set progSource to choose file with prompt "プログラムのファイルを選択"
end tell
repeat with tgtFile in inFiles
procFile(progSource, tgtFile) of me
end repeat
activate
display dialog "END" giving up after 2
end open
——————————————————-
–プロセスを呼び出して処理
——————————————————-
on procFile(progSource, tgtFile)
set progSource to quoted form of POSIX path of progSource
set tgtFile to quoted form of POSIX path of tgtFile
do shell script "perl " & progSource & " " & tgtFile
end procFile
[/applescript]
AppleScript 共有フォルダのリストを取得する
AppleScriptで共有フォルダのリストを取得できるだろうと思っていたが簡単ではなかった。
10.6だとフォルダを選び「情報を見る」と、共有フォルダのチェックボックスがある。そのチェックの有無を取得できると思っていたが、そんな属性はなかった。
いろいろ〜とググリ回って、できたスクリプトがこれ。
[applescript]
set cmd to "dscl . list /SharePoints"
set sharedTxt to do shell script cmd
set sharedList to {}
repeat with pp from 1 to (count paragraph of sharedTxt)
set spName to paragraph pp of sharedTxt
set cmd to "dscl . read /SharePoints/" & spName & " directory_path"
try
set thePathTxt to (do shell script cmd)
set len to (length of "dsAttrTypeNative:directory_path: ") + 1
set sharedList to sharedList & ((characters len thru -1 of thePathTxt) as Unicode text)
end try
end repeat
[/applescript]
先週のPAGE2011…
はじめましてamemiyaです。
先週、PAGE2011に行った際に、Adobeの無料セミナーを講聴しました。
展示会場に着いた時、ちょうど、自分が普段よく利用するWebサイトの方が講師をされいたので足を止めて、そのまま1時間半ほど講聴しました。具体的ですぐに使える内容だったので、聞いて損はありませんでした。すでに終了しているセッションも、聞いておきたかった……。
このセミナー、毎回立ち見が出るほど人気があります。有名な方のお話がタダで聞けて、内容も充実してるので当然なんですが、今までは、混んでるし時間無いからな〜と思って、チラ見ぐらいだったんです。来年はもっと時間を取って、ちゃんと講聴しようと思います。
(written by amemiya)
AppleScript 環境による挙動の違う例
AppleScriptでツールを作成、配布した経験のある方なら、自分の環境で動作するが他の人の環境で動作しない経験をお持ちではないかと思います。
昨日もあるツールが10.4.11と10.6.6で異なる挙動をしました。ソースは同一です。いろいろと調べるとこんな原因にたどり着きました。
set X to “”
set AppleScript’s text item delimiters to space
every text item of X
10.4.11, 10.5.8 では {“”} と空文字列となりましたが、10.6.6では{}とヌルとなりました。text itemをcountすれば当然1と0と違いがでます。困ったもんです。
ただし、これはOSによる違いではなく、機械によって戻り値が異なるようです。要注意です。
PAGE2011
PAGE2011、短い時間でしたが回ってきました。
・Quark
韓国のXtension開発会社と提携して、QuarkからのEPUB書き出しとそのビュアー、エディターを販売する計画があるようです。韓国の会社の社長、開発者数名が積極的にデモを行っていました。
・ニューキャスト
今年のPAGEで注目していました。ブース前を通り過ぎてしまったところを代表の河原さまに、お声かけしていただきました。
CPUBというWikiを利用した入稿システムです。そこからIDMLフォーマットやEPUB形式にも書き出せます。Grailsで作られており、日本有数のGrails開発者、山本様を有しているのが強み。今後、注目していきたいです。
・デジックス
ニューキャストのお隣が、デジックスさまのブースでした。InDesignのプラグインを展示しています。1万円をきっており、入手しやすい価格が魅力です。飾り罫、aiPDF、あふれ、新聞製作プラグインです。
代表の阿部様とは、弊社に来ていただき説明してもらった事もあり、ご挨拶をとおもいましたが、接客中でしたので、黙礼で失礼させていただきました。
・モリサワ
MCBookの開発に実は弊社も少しご協力しています。MCBookのアンドロイド対応も可能になり、出版社も増えているようです。
弊社でも制作ができるよう、この間、チュートリアルをやってみました。かなり簡単に電子書籍が制作出来ました。
・エステナイン京都
ここもInDesignのプラグインを制作しています。つい昨日、弊社に来ていただき説明してもらった事もあり、ご挨拶いたしました。
数式プラグイン、囲み罫プラグイン、あふれ調整プラグインです。逆丁出力プラグインといったユニークなものもありました。
・リンクス
DBPublisherの2.5をデモしていただきました。インタラクティブに対応しています。
Adobe Digital Publishing Suiteでは、縦組用、横組用のドキュメント作成が必要ですが、その両ドキュメントの自動組版やカタログ写真のスライドショーボタンの埋め込みができるのが面白いと思いました。
(wrriten by kamata)