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から開くことができる。