Open1

AppleScript: NumbersのCSVエクスポートでハマる

kabeyakabeya

NumbersからCSVファイルにエクスポートするのを自動化したくて、AutomatorやSiriショートカットでできるんじゃないかと調べたんですが、できませんでしたね。
で、よくよく調べると、AppleScriptではできるということなんです。

それで20年ぶりぐらいにAppleScriptを触ってエクスポートしようとしたんですが以下のエラーでハマりました。

on run
    tell application "Numbers"
        set myDoc to open "/path/to/XXX.numbers"
        set exportDir to "/path/to/CSVエクスポート先"
        export myDoc to exportDir as CSV with properties {exclude summary worksheet:true}
        close myDoc saving no
    end tell
end run

結論から言うとパスそのままじゃなくてPOSIX file "/path/to/CSVエクスポート先"にしないとダメ、ということでした。

このCSVエクスポート、かなり癖がありますね。おそらくシート1つ表1つだと、フォルダパスじゃなくて.csvのファイルパスじゃなくちゃダメなんですね。
現行Numbersには、複数の表を1つのファイルに結合するオプションがありますが、それは選べませんし、エンコーディングも選べません。
いったん出力したあとに何かのスクリプトで色々処理する必要があります。
とは言え、AppleScriptでNumbersに細かなことをさせるよりは、どんなでも良いから一回CSVファイルに出力してしまったほうが、処理はしやすいのですけれども。

いちおう動いたバージョンを載せます。

on run
    tell application "Numbers"
        set myDoc to open "/path/to/XXX.numbers"
        set exportDir to POSIX file "/path/to/CSVエクスポート先"
        export myDoc to exportDir as CSV with properties {exclude summary worksheet:true}
        close myDoc saving no
    end tell
end run

環境は以下です。
スクリプトエディタ バージョン 2.11(231)
AppleScript 2.8
Numbers バージョン14.1(7040.0.73)