【Yosemiteの新機能】JavaScriptでアプリケーションを操作し、面倒な作業を自動化してみた

初めまして、ProttのフロントエンドエンジニアのSyoです。よろしくお願いします!

実は皆さんもう既にご存知と思いますが、Mac OS XにはAppleScriptというスクリプト言語があり、システムアプリケーションや一部のサードパーティ製アプリをコントロールすることができます。これより日常中繰り返し同じ操作する所はプログランミングで操作を自動化することができるので大変便利です。ただし、AppleScriptはそれ以外一切使う所がなくて、その為にわざとAppleScriptを勉強するのは非効率ではないでしょうか。

今秋リリースするOS X Yosemiteでは、AppleScriptに加えJavaScriptも利用可能になりました。ということでJavaScriptを少しでもわかる方は、JavaScriptで簡単にMacアプリケーションを操作することが出来るようになりました!

Hello World

さて、定番の「Hello world」から始めましょう!(現時点はYosemiteのBeta版を使う必要があります)
「スクリプトエディタ」を起動して下記のコードを入れましょう。

TextEdit = Application('TextEdit')
doc = TextEdit.Document()
TextEdit.documents.push(doc)
doc.text = 'Hello world!’

 

ツールバーにある実行ボタンを押すと、テキストエディットが自動的に起動され、「Hello world!」という文字が入ってます。
更に、文字のフォントや色、サイズを指定することが出来ます。

TextEdit = Application('TextEdit')
doc = TextEdit.Document()
TextEdit.documents.push(doc)
doc.text = 'Hello world!'
doc.text.size = '50'
doc.text.color = 'blue'
doc.text.font = 'Source Code Pro’

 

因みに、スクリプトエディタの「ファイル」→「用語説明を開く」から操作出来るMacアプリケーションの種類や使えるクラス・プロパティなどのドキュメントを確認することができます。JavaScriptの知識があればすぐにサクサク書けます。

スクリプトエディタ用語説明

Dig Further

ではもう少し具体的な例を見てみましょう。例えば私がデザイナーだったとして、毎日クライアントのこじまさんに当日の作業成果物を報告しなければならないとします。本当は毎日繰り返しメールを書くという手間な作業しなければいけませんが、OS X YosemiteではJavaScriptのコードを書くことで自動化することができます。使うコードは下記です:

function openDocuments(docs) {
    Mail = Application("Mail")
    
    //メール本文
    content = “こじまさん\n\n"
              + "本日の作業分です、ご確認ください。\n\n” 

    //件名を今日の日付に設定する
    now = new Date()
    m = now.getMonth() + 1
    d = now.getDate()
    subject = m + "月" + d + "日の報告" 
    msg = Mail.OutgoingMessage({
        subject: subject,
        content: content,
        visible: true
    })
    Mail.outgoingMessages.push(msg)
    
    //システムの「連絡先」アプリからemailを取得する
    Contacts = Application("Contacts")
    person = Contacts.people["kojima"]
    recipient = Mail.ToRecipient({
        name: person.name(),
        address: person.emails[0].value()
    })
    msg.toRecipients.push(recipient)
    
    //ドラグ&ドロップしたファイルを添付する
    for (d in docs) {
        attachment = Mail.Attachment({fileName: docs[d]})
        msg.characters.push(attachment)
    }
    
    Mail.activate()

    //実は送信まで自動に出来ますが、ここで確認するためコメントアウトする
    //msg.send()
}

 

これをスクリプトエディタに入れてファイルフォーマットを「アプリケーション」としてデスクトップに保存しておきます。
使うときは送信したいファイルをそれの上にドラッグ&ドロップするだけです。実際の動きは下記のgif画像で確認できます。

プレビュー

如何でしたか?ご興味ある方は是非、今秋Yosemiteの正式版をリリース後にJavaScriptを使って、この日本…世の中自分の仕事を楽に変えましょう。それでは!

 

(この記事はAppleの一般公開資料に基づいて作成しました。)