AppleScriptって便利そうなんだけど、サンプル少なくて苦労する。 なので、「ファイルを開いて変換する」のサンプルを書いておきました。
Apple Script でファイルを開く
これでファイルが開く
set a to POSIX file "/Users/takuya/Desktop/sample.pages" tell application "Finder" to open a
これでファイルが開く
Apple Script でApplicationを起動して終了する。
tell application "Pages" to activate tell application "Pages" to quit
これで、アプリケーションが起動して終了する。
Applicationにファイルを開くよう指示する。
open でたいていは開くけど、具体的に、アプリを指定したい場合
set a to POSIX file "/Users/takuya/Desktop/test.pdf" tell application "Finder" to open a
これだと、標準アプリで開くので。
Google Chrome で開くには
set a to POSIX file "/Users/takuya/Desktop/test.pdf" tell application "Google Chrome" to open a
こうなる。
chromeが先に開いてて、開いたことが分からない?
set a to POSIX file "/Users/takuya/Desktop/test.pdf" tell application "Google Chrome" to open a tell application "Google Chrome" to activate
PagesやNumbers/Keynoteのファイルを開いてPDFとして保存する
保存したファイルを開く。
set a to POSIX file "/Users/takuya/Desktop/sample.pages" tell application "Pages" to quit tell application "Pages" to open a tell application "Pages" to export document 1 to POSIX file "/Users/takuya/Desktop/test.pdf" as PDF tell application "Pages" to quit tell application "Finder" to open POSIX file "/Users/takuya/Desktop/test.pdf"
これでファイルを変換して保存できます。
関数にして変換作業を明確にする。
on convert(in_file) in_file tell application "Pages" to quit tell application "Pages" to open in_file set desktop_path to POSIX path of (path to desktop folder) set out_file_path to POSIX file (desktop_path & "test.pdf") tell application "Pages" to export document 1 to out_file_path as PDF tell application "Pages" to quit tell application "Finder" to open out_file_path end convert set a to POSIX file "/Users/takuya/Desktop/sample.pages" convert(a)
デスクトップを規定値から読み出す
デスクトップなど規定されたフォルダは、そのまま読み出せます。
set desktop_path to POSIX path of (path to desktop folder) set a to POSIX file (desktop_path & "test.pdf") tell application "Finder" to open a
POSIX が分かりやすいのでPOSIXスタイルを使ってファイルを開いた
関数の中身が冗長なので、ブロックにまとめる
tell application が多くて冗長なので省略する。
set a to POSIX file "/Users/takuya/Desktop/sample.pages" convert(a) on convert(in_file) set desktop_path to POSIX path of (path to desktop set out_file_path to POSIX file (desktop_path & "test.pdf") tell application "Pages" quit open in_file export document 1 to out_file_path as PDF quit end tell tell application "Finder" to open out_file_path end convert
App形式で保存してドラッグドロップを受け付けるようにする。
それでも、まだファイルのパスが残るので、ドラッグドロップでファイルを受け取りたい。
ドラッグされたファイルのパスを解析して、それを変換する。
Appで保存し、『on open 引数』で関数を定義すると、 「ドラッグ・ドロップ」や「送る」でファイルを受け取った時の動作を指定できる。
on open dropped_items repeat with _item in set out to convert(_item) tell application "Finder" to open out end repeat end open on convert(in_file) set desktop_path to POSIX path of (path to desktop folder) set out_file_path to "" tell application "Pages" quit open in_file set f_name to name of document 1 set f_name to text 1 thru -7 of f_name set f_name to f_name & ".pdf" set out_file_path to desktop_path & f_name export document 1 to POSIX file (out_file_path) as PDF quit end tell POSIX file out_file_path end convert
まとめ
アプリ起動
tell application "Google Chrome" to activate
アプリを起動してファイルを開く
tell application "Google Chrome" to open file "..."
複数のtell application をまとめる
tell application "Google Chrome" open file "..." activate quit end tell
ループ
repeat with i in items display dialog i end repeat
変数定義
set a to 1
変数読みだし
get name of application "Google Chrome"
配列の中の一つを読み出す
複数形が配列を示す。楽しい。
get windows of application "Google Chrome" get window 1 of application "Google Chrome"
わからないこと
ファイルをPreview.appで開いて「PDFで保存」ってすれば、ほぼすべてのファイルをPDF化できる。 でも、Preview.appのAppleScriptにはExport as PDFのコマンドが無い。詰んだ。
これはSystem Eventsからクリックするしか無いんですかね。
AppleScript難しい。
追記
Preview.appをSystem Events で操作して、PDF保存したけど、いまいちだった。 Pages/Numbers/KeynoteやPowerPoint/Excel/Word のそれぞれのメニューを使った方が綺麗だったのでこの方法はボツだろうな。。。
tell application "Preview" to activate tell application "System Events" tell process "Preview" tell menu bar 1 tell menu bar item "File" tell menu "File" pick menu item "Export as PDF…" delay 1 keystroke return end tell end tell end tell end tell end tell