YosemiteからAppleScriptがJSでも書けるようになりました。JavaScript for Automation(JXA)と言われているやつです。昔書いたAppleScriptをJXAで書き直してみたところ、これどうやるんだ……が減って便利〜。

var BathyScape = Application('BathyScaphe');
var selectedText = formatText(BathyScape.documents[0].selectedText.get());
var threadTitle = BathyScape.documents[0].threadTitle.get();
var threadURL = BathyScape.documents[0].threadURL.get();

var app = Application.currentApplication();
app.includeStandardAdditions = true;

var Evernote = Application('Evernote');
Evernote.notebooks['Text'].exists() || Evernote.createNotebook('Text');

var note = Evernote.findNotes('intitle:' + threadTitle)[0];
if (note) {
    // http://d.hatena.ne.jp/E_Mattsan/20150510/1431238875
    var text = note.htmlContent.get();
    note.htmlContent.set('');
    Evernote.append(note, {html: text});
    Evernote.append(note, {text: '\n\n\n' + selectedText});
}
else {
    Evernote.createNote({
        title: threadTitle,
        tags: ['2ch'],
        notebook: 'Text',
        withText: selectedText,
    });
}

app.displayNotification('Done', {
    withTitle: 'BathyScaphe Script',
    subtitle: 'Send to Evernote',
});


function formatText(text) {
    var ret = [];
    text.trim().split(/\n/g).forEach(function(text) {
        text = text.trim().replace(/ . /g, '  ');
        if (/^\d+ .+ID: .+$/.test(text)) {
            text = '\n\n' + text + '\n';
        }
        ret.push(text + '\n');
    });
    return ret.join('').trim();
}

JXAの癖。プロパティーはメソッドで呼び出す。

Foo.bar()

これはFoo.bar.get()のシンタックスシュガーだが、普通にgetメソッド使ったほうが分かりやすいと思う。プロパティーへの代入は普通に=でできるが、これもsetメソッドのシンタックスシュガー。

Foo.bar = 'hello'

アプリケーションが使えるAppleScriptのリファレンスはScript Editor.appから開くことができる。