5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【AppleScript】開いているNumbersをExcelにエクスポートする

Last updated at Posted at 2015-06-03

現在作っているゲーム内のパラメータの管理(データテーブル)に Numbers を使っています。ですがちょっとした問題が……。

問題点

NumbersからExcelを出力する際に、メインメニューから「ファイル > 書き出す > Excel...」を毎回選ぶのは一手間かかってしまいます。

001.png

さらに、書き出し先を選んだ後も、上書き確認のダイアログが表示されます。

002.png

ゲームを作っていると、データの調整にはトライ&エラーは必須なので、この作業を何回も繰り返すのはなかなか大変です。
そこで、このエクスポート作業を簡単にできるAppleScriptを書いてみました。

スクリプト

numbers2xlsx.scpt
-- 開いているドキュメントの数を取得する
tell application "Numbers" to set cnt to count document

-- 開いている数で繰り返す
repeat with i from 1 to cnt
	-- ファイルパスを取得する
	tell application "Numbers" to set theFile to file of document i as string
	
	-- 拡張子を *.numbers から *.xlsx に変更する
	set tmp to AppleScript's text item delimiters
	set AppleScript's text item delimiters to ".numbers"
	set theList to every text item of theFile
	set AppleScript's text item delimiters to ".xlsx"
	set theFile to theList as string
	set AppleScript's text item delimiters to tmp
	
	-- POSIX形式に変換
	set xlsx to POSIX file (POSIX path of theFile)
	
	-- エクスポート実行
	tell application "Numbers" to export document i to xlsx as Microsoft Excel
end repeat

これで Numbers で開いているドキュメントを、同名の *.xlsx に自動で書き出すことができます。

ショートカットキーへの登録

これでだいぶ便利になったのですが、さらに楽をするためにショートカットキーへの登録をします。登録するにはAutomatorさんを使います。

Automator_icon.png

Automatorを起動して、新規書類を作成します。そして「サービス」を選び「選択」をクリックします。

a001.png

アクションには「Run AppleSript」をダブルクリックして選びます。

a002.png

そうしたら検索対象に「Numbers.app」を選び、先ほどのスクリプトを (* Your script gose here *) と書いてあるところに貼り付けます。

a003.png

念のため実行ボタンを押して動作確認しておくとよいです。
動作を確認したら「Cmd+S」で保存します。名前は「NumbersからExcelをエクスポート」と入力して、保存ボタンを押します。

a004.png

保存したら、任意のアプリケーションのメニューから「サービス > サービス環境設定」を選びます。

a005.png

サービス一覧が表示されるので、登録したサービスを選び、右側の欄をクリックして、ショートカットキーを割り当てます。

a006.png

ここでは「Cmd+F10」としました。
これでNumbersがアクティブの状態で「Cmd+F10」を押すと、エクスポートが行われるようになります。

データコンバートの流れ

余談になりますが、今作っているゲームのデータコンバートの流れはこのようになっています。

003.png

Numbersにアイテム情報や敵データの入力をしています。それをExcelにエクスポートして、CSVにコンバートし、実行環境で読み込むようにしました。Excelにすると、Python(xlrd)やRuby(win32ole)などから読み込めるようになるので、データコンバートの実装が簡単になります。

NumbersからCSVに直接出力できればいいのですが、複数のシートを使っていたり、コンバート時に定数を数値に置き換えるなど変なことをやっているので、AppleScriptでは大変そうな気がしてPythonスクリプトを通しています。あとLibreOfficeなどを使えば *.xlsx を直接編集・保存できますが、せっかくのMac環境なので、Apple公式の表計算ソフトを使いたかったのです(Numbersでも *.xlsx を開くことはできますが、保存する場合は *.numbers がデフォルトになります)。

今回はCSV形式で出力しましたが、環境によってはJSONやLuaに出力してもいいかもしれませんね。

参考

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?