【AppleScript】 열려있는 Numbers를 Excel로 내보내기

9293 단어 AppleScriptMacnumbers
현재 만들고 있는 게임내의 파라미터의 관리(데이터 테이블)에 Numbers 를 사용하고 있습니다. 하지만 약간의 문제가…

문제점



Numbers에서 Excel을 출력할 때 메인 메뉴에서 [파일 > 내보내기 > Excel...]을 매번 선택하는 것은 한 번 걸립니다.



또한 내보내기 대상을 선택한 후에도 재정의 확인 대화 상자가 표시됩니다.



게임을 만들면 데이터 조정에는 트라이 & 에러가 필수이므로 이 작업을 여러 번 반복하는 것은 매우 어렵습니다.
그래서 이 내보내기 작업을 쉽게 할 수 있는 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를 시작하여 새 문서를 만듭니다. 그런 다음 서비스를 선택하고 선택을 클릭합니다.



액션에는 「Run AppleSript」를 더블 클릭해 선택합니다.



그렇다면 검색 대상으로 "Numbers.app"를 선택하고 방금전의 스크립트를 (* Your script gose here *) 라고 써 있는 곳에 붙여넣습니다.



만약을 위해 실행 버튼을 눌러 동작 확인해 두는 것이 좋습니다.
동작을 확인하면 「Cmd+S」로 저장합니다. 이름은 Numbers에서 Excel 내보내기를 입력하고 저장 버튼을 누릅니다.



저장한 후 모든 응용 프로그램 메뉴에서 서비스 > 서비스 환경설정을 선택합니다.



서비스 목록이 표시되므로 등록한 서비스를 선택하고 오른쪽 열을 클릭하여 바로 가기 키를 할당합니다.



여기에서는 「Cmd+F10」이라고 했습니다.
이제 Numbers가 활성 상태에서 Cmd+F10을 누르면 내보내기가 수행됩니다.

데이터 변환의 흐름



여담이 됩니다만, 지금 만들고 있는 게임의 데이터 컨버트의 흐름은 이렇게 되어 있습니다.



Numbers에 아이템 정보나 적 데이터를 입력하고 있습니다. 그것을 Excel로 내보내 CSV로 변환하여 실행 환경에서 읽습니다. Excel로 하면 Python(xlrd)이나 Ruby(win32ole) 등에서 읽을 수 있게 되므로 데이터 컨버트의 구현이 간단해집니다.

Numbers에서 CSV로 직접 출력 할 수 있으면 좋지만 여러 시트를 사용하고 있거나 변환시 상수를 수치로 바꾸는 등 이상한 일을하고 있기 때문에 AppleScript에서는 힘들 것 같아 Python 스크립트를 통해 합니다. 그리고 LibreOffice등을 사용하면 *.xlsx 를 직접 편집・저장할 수 있습니다만, 모처럼의 Mac 환경이므로, Apple 공식의 스프레드시트 소프트웨어를 사용하고 싶었습니다(Numbers에서도 *.xlsx 를 열 수는 있습니다만, 저장하면 *.numbers가 기본값입니다.)

이번은 CSV 형식으로 출력했습니다만, 환경에 따라서는 JSON나 Lua에 출력해도 좋을지도 모르겠네요.

참고


  • 陶嶋工房 - AppleScript / Tips / 문자열 찾기 및 바꾸기
  • AppleScript에서 파일을 열고 PDF로 저장하는 예.
  • Apple Script를 바로 가기 키로 실행
  • 좋은 웹페이지 즐겨찾기