Hatena::ブログ(Diary)

W&R : Jazzと読書の日々 このページをアンテナに追加 RSSフィード

2018/04/22

Drafts5で作ろう、自作アクション入門(1)

無いなら自分で作ればいいじゃない。


ActionMaker

Drafts5のアクション・リストに登録するアクション、それがActionMakerです。無料ユーザーでもアクションを作ることができます。このActionMakerを前提に解説します。

ActionMakerの登録はこちら → http://tinyurl.com/y7ye7dj6


今日のミッション

Drafts5のテキストを他のアプリに転送する方法を考えてみます。


URLスキームで転送

Simplenoteにテクストを渡すアクションを作ります。まず、Drafts5に下記スクリプトを書きます。一行目の「Simplenote」がアクション名で、それ以降がJavascriptになります。書き終わったらActionMakerを起動します。インポート先に答えれば登録終了です。

Simplenote
text = editor.getText();
url = "simplenote://new?content="+encodeURIComponent(text);
app.openURL(url);
editor.focus();


スクリプト解説

スクリプトの内容を見ていきます。

text = editor.getText();

Drafts5の本文はeditorで扱われます。読み込みは editor.getText() 、書き込みが editor.setText() です。このスクリプトでは本文を取得し変数textに代入しています。

url = "simplenote://new?content="+encodeURIComponent(text);

SimplenoteのURLスキームは「simplenote://new?content=テクスト」です。なので、先ほどの変数textをコード化して連結し、変数urlに代入します。

app.openURL(url);

Drafts5の拡張コマンドはappにまとめられています。URLスキームの起動は app.openURL() なので、これを呼び出しSimplenoteにテクストを転送します。

editor.focus();

アクション・リストを開いたままなので、エディタに戻る呪文を唱えます。editorにfocus()で、フォーカスがエディタ画面に移ります。無かっても実害はありません。


クリップボードの使用

本文をクリップボードに保存し、HandyFlowyを起動します。HandyFlowyは直接テクストを転送する方法がないのでクリップボードを経由します。

HandyFlowy
text = editor.getText();
app.setClipboard(text);
url = "handyflowy://";
app.openURL(url);
editor.focus();

クリップボードの読み込みは app.getClipboard()、書き込みは app.setClipboard() になります。あとはSimplenoteと同じです。ほら、何か作りたくなったでしょ?


まとめ

Editor · agiletortoise/drafts-documentation Wiki · GitHub
A global "editor" object is available in all action scripts. This object allows manipulation of the ...

テクストの転送について考えてみました。URLスキームで受け渡しするアプリは上記の応用で凌げると思います。URLスキームが無い場合はWorkflow経由でなんとかなるかも。

Drafts5はGitHubにまとめてあるのですが、いくつか動かないコマンドもあります。まだ未実装なのでしょうか。使い方のわかったところから今後も解説していきます。