アプリ連携 – 買い物メモ編

問題。ここに買い物メモがあります。

合い挽き肉 500g
牛乳
いんげん
コーン缶(クリーム)
生姜

改行しただけの箇条書きのテキストファイルです。Dropboxの特定の場所に保存してあります。毎回同じファイルを書き換えるので、ファイル名はいつも同じです。

さてこれを1ボタンでListacularにタスクリストとして表示させるにはどうしたらいいでしょうか。使うのはiOSデバイスのみです。

答え

Launch Center Proでテキストファイルを読み込み、TextToolで整形して、DraftsからDropboxのListacularフォルダにアップロードしてListacularアプリを起動する。(他にもやり方はあります)

今回はこんな趣旨です。やっていきましょう。

準備する

こういうアプリ連携は逆から作っていくのが簡単です。まずListacularのURLスキームはdb-eo6dojwhn042lh2です。オプションはありません。

Listacular for Dropbox – Rapid notes, lists and to-do’s with plaintext Ver.1.10
カテゴリ: 仕事効率化, ユーティリティ
現在の価格: 無料(サイズ: 5.2MB)

次にDraftsからDropboxのListacularフォルダにアップロードするアクションを作ります。こんな感じ。ファイル名にタグを使って日毎にファイルを分ける時もWriteはReplace設定にしてください。後から修正があった時にも対応できます。

groceries_list_01

URLを組み合わせるとこうなる。便宜的にエンコードする部分を{{}}で囲ってあります。実際にDraftsでは{{}}内はURLエンコードされますが、後々ややこしくなって思わぬエラーの元になりがちなので、こういういくつもアプリを連携する時はあまり使わない方がいいかもしれません。慣れたら無駄にエンコードしなくて済むので助かりますが。

  • drafts://x-callback-url/create?text=&action={{買い物リスト作成}}&afterSuccess=Delete&x-success={{db-eo6dojwhn042lh2:}}
Drafts Ver.3.5.9
カテゴリ: 仕事効率化, ソーシャルネットワーキング
現在の価格: 300円(サイズ: 10.6MB)

次にTextToolで整形します。Listacularでタスクとして認識させるには行頭に-を付けてやればいいので、

  • texttool://x-callback-url/transform?text=&method=affix&prefix=-%20&suffix=&scope=lines&clipboard=0

こうなる。suffixは空ですが必須です。こうしないと行末に(null)がセットされます。これもとりあえずtextは空で。TextToolのアウトプットは[[output]]に格納されます。先ほどのDraftsと組み合わせて、

  • texttool://x-callback-url/transform?text=&method=affix&prefix=-%20&suffix=&scope=lines&clipboard=0&x-success=drafts%3A%2F%2Fx-callback-url%2Fcreate%3Ftext%3D%5B%5Boutput%5D%5D%26action%3D%25E8%25B2%25B7%25E3%2581%2584%25E7%2589%25A9%25E3%2583%25A1%25E3%2583%25A2%25E4%25BD%259C%25E6%2588%2590%26afterSuccess%3DDelete%26x-success%3Ddb-eo6dojwhn042lh2%253A

こうなります。

TextTool Ver.1.0.2
カテゴリ: 仕事効率化, ユーティリティ
現在の価格: 500円(サイズ: 2.8MB)

最後にLaunch Center ProでDropbox上のテキストファイルを読み込みます。dropbox-text:の後にファイルのパスを書くだけ。これを先ほどのTextToolのtextに入れる。

  • [dropbox-text:path/to.txt]

最終的にできあがったのがこちら。

  • texttool://x-callback-url/transform?text=[dropbox-text:path/to.txt]&method=affix&prefix=-%20&suffix=&scope=lines&clipboard=0&x-source=Drafts&x-success=drafts%3A%2F%2Fx-callback-url%2Fcreate%3Ftext%3D%5B%5Boutput%5D%5D%26action%3D%25E8%25B2%25B7%25E3%2581%2584%25E7%2589%25A9%25E3%2583%25A1%25E3%2583%25A2%25E4%25BD%259C%25E6%2588%2590%26afterSuccess%3DDelete%26x-success%3Ddb-eo6dojwhn042lh2%253A

このURLをLaunch Center Proのアクションに登録します。そのままだとTextToolのアイコンになるのでListacularのものに変更しました。Listacularアイコン

groceries_list_02

Launch Center Pro Ver.2.1
カテゴリ: 仕事効率化, ユーティリティ
現在の価格: 500円(サイズ: 15.8MB)

これで完成です。

  1. Launch Center Proで作成したアクションをタップ
  2. Dropbox上のテキストファイルを読み込んでコピー
  3. TextToolに渡して行頭に-を追加
  4. Draftsに渡してListacularの同期フォルダに保存
  5. Listacularアプリを起動

さすがの俺もこれなら面倒じゃない。家で買い物メモを作成して保存しておけば、あとはiPhoneで1タップするだけ。

あとがき

この買い物メモ作成ワークフローは、実際に使っているものかといえばそんな事はありません。さっき思いついて作りました。こんなのは最初からリストを作ってListacularフォルダに保存したらいいだけですからね。

ソースになるテキストを取得して望む書式に編集して使う、というのはよくあるパターンです。MyScriptsPythonistaではそういうスクリプトがたくさん公開されています。今回は簡単なのでTextToolで済ませました。

Launch Center ProはDropbox機能とx-callback-url対応でさらに用途が広がりました。ランチャーは他のアプリを使っていますが、連携を考えると外せないアプリです。

テキストエディタアプリのURLスキームとパラメータまとめ

ランチャーアプリなんかでよく使われるURLスキーム。単純にアプリを起動するだけでなく、パラメータを付けてテキストを渡せるものが増えてきました。メジャーどころのテキストエディタアプリでも実装の出揃った感があるので、確認できるものをまとめました。

まとめたアプリ

  • Nebulous Notes
  • Textforce
  • WriteUp
  • Elements
  • Notesy
  • WriteRoom
  • Byword
  • Writing Kit
  • Day One

受け渡すテキストは全てURLエンコードが必要です。エンコードしなくても正常に渡せることがありますが、文字化けや改行されない等の不具合が発生します。

Nebulous Notes

Nebulous Notes (for Dropbox) 6.0
カテゴリ: 仕事効率化, ユーティリティ
現在の価格: 450円(サイズ: 10.8MB)
Nebulous Notes Lite 6.0
カテゴリ: 仕事効率化, ユーティリティ
現在の価格: 無料(サイズ: 10.8MB)

Nebulous NotesのURLスキームは nebulous です。パラメータを付けていくつかの操作ができるようになっています。

nebulous://
起動のみ
nebulous://new
起動して新規ファイルを作成して開く。newパラメータで作成したファイルはローカルに保存されます。ファイルアクションからSave Asボタンをタップして好きなフォルダに保存できる。
nebulous://new?contents=some%20string
新規ファイルに文字列を追加。
nebulous://path/to%20file.txt
指定したファイルを開く。フォルダ、ファイルが存在していること。無い場合はエラーになります。新規作成はしてくれない。
nebulous://path/to%20file.txt?append=some%20string
指定したファイルを開き、後方に文字列を追加。アプリ内にキャッシュしているファイルのみ
nebulous://path/to%20file.txt?prepend=some%20string
指定したファイルを開き、前方に文字列を追加。アプリ内にキャッシュしているファイルのみ

Textforce

Textforce – Dropbox text editing 2.8.1
カテゴリ: 仕事効率化, ビジネス
現在の価格: 350円(サイズ: 2MB)

TextforceのURLスキームは textforce です。パラメータを付けていくつかの操作ができるようになっています。

キー バリュー 必須?
path 対象ファイルのパスです。 Must
text ファイルに書き込む文字列です。 Must
mode w:ファイル中身を {string}で上書きします。a:ファイル末尾に {string} を追記します。省略時は aです。 Optional
after 書き込み後のアクションを指定できます。edit: 書き込み後、編集モードにします。edit_by_atok: 書き込み後、ATOK Padを使って編集しようとします。ATOK Padが存在しない場合は、通常のキーボードで編集します。quick_look:.html, .rtfファイルをプレビュー表示します。省略時は何もしません。 Optional

※ pathキーのバリュー{dropboxpath}, および textキーのバリュー{string} は、URLエンコードが必要です。文字コードは UTF–8です。

例) textforce://file?path=/test.txt&method=write&text=hoge&mode=a
/text.txt を開いて “hoge”を追記します。

引用:Textforce « domo Apps

指定したパスにファイルが無い場合はファイルを作成します。

WriteUp

WriteUp – Notes with Dropbox 3.4
カテゴリ: 仕事効率化, ユーティリティ
現在の価格: 350円(サイズ: 11MB)

WriteUpのURLスキームは writeup です。パラメータを付けていくつかの操作ができるようになっています。

writeup://newText?text=テキスト
新規ファイルを作成してテキストを貼り付けます。
writeup://newText?name=ファイル名&text=テキスト
新規ファイルを作成してテキストを貼り付けます。作成するファイルの名前も指定可能。

Elements

Elements For Dropbox – A Markdown Notes and Writing App 2.5.1
カテゴリ: 仕事効率化, ビジネス
現在の価格: 450円(サイズ: 4MB)

ElementsのURLスキームは x-elements です。パラメータを付けていくつかの操作ができるようになっています。

x-elements://new
新規ファイルを作成。作成されるファイル形式は、設定のDefault Extensionによる。
x-elements://new?text=I Am Text
新規ファイルを作成してテキストを貼り付ける。

Notesy

Notesy for Dropbox 2.2
カテゴリ: 仕事効率化, ユーティリティ
現在の価格: 450円(サイズ: 14.3MB)

NotesyのURLスキームは notesy です。パラメータはx-callback-url APIの一部を利用しています。

詳しくは公式サイトのブログにまとまっているのどうぞ。
Introducing… A URL Scheme for Notesy | Notesy

正直わかりにくいので、いくつか例を書きておきます。

notesy://x-callback-url/open?path=パス&name=ファイル名
指定したファイルを開きます。指定したファイルが無い場合は新規作成します。
Notesy Folderがデフォルト設定のままなら、
notesy://x-callback-url/open?name=Welcome
これでWelcomeファイルを開きます。
notesy://x-callback-url/append?path=パス&name=ファイル名&text=テキスト
指定したファイルにテキストを追記します。
notesy://x-callback-url/append?path=パス&name=ファイル名
上のと同様に指定したファイルにテキストを追記しますが、 text= を指定しない場合はクリップボード内の文字列が追記されます。

WriteRoom

WriteRoom 3.2.1
カテゴリ: 仕事効率化, ユーティリティ
現在の価格: 450円(サイズ: 1.8MB)

WriteRoomのURLスキームは writeroom です。パラメータを付けていくつかの操作ができるようになっています。

writeroom://new
新規ファイルを作成します。ファイル形式は設定→AdvancedのNew File Extensionで指定したもの。デフォルトはtxtです。new/ファイル名 とすると、デフォルト以外の拡張子で作成したり、ファイル名を指定できます(例:new/markdown.md)。
writeroom://new/パス/
指定したフォルダ内に新規ファイルを作成します。
writeroom://new/draft/ ならdraftフォルダにファイルが作成されます。
指定したパス(フォルダ)が無い場合はエラーになり、 new/draft/ ならdraftという名前のファイルが作成されます。 new/draft/new.txt と指定すると、WriteRoomが起動するだけです。
writeroom://new/ファイル名?body=テキスト
新規ファイルを作成して、テキストを貼り付けます。ファイル名を指定しないとアプリが落ちました。
writeroom://open/ファイル名
指定したファイルを開きます。 writeroom://open/パス/ファイル名 とパスを指定する事もできます。
writeroom://open/ファイル名?append=テキスト
指定したファイルにテキストを追記します。
writeroom://search/検索語
検索語でファイルを検索します。

Byword

Byword 1.1.1
カテゴリ: 仕事効率化, ユーティリティ
現在の価格: 250円(サイズ: 4MB)

BywordのURLスキームは byword です。パラメータを付けていくつかの操作ができるようになっています。

byword://new
新規ファイルを作成します。
byword://new?text=テキスト
新規ファイルを作成して、テキストを貼り付けます。

Writing Kit

Writing Kit – Research & Write Markdown/Fountain Documents 3.3.3
カテゴリ: 仕事効率化, ビジネス
現在の価格: 450円(サイズ: 5MB)

Writing KitのURLスキームは writingkit です。パラメータを付けていくつかの操作ができるようになっています。

writingkit://add?fileName=ファイル名&content=テキスト
指定したファイル名で新規作成し、テキストを貼り付けます。
writingkit://add?content={clipboard}
ファイルを作成し、クリップボード内の文字列を貼り付けます。 add?fileName=ファイル名?content={clipboard} で作成するファイル名を指定できる。

挙動が不安定です。作成してもファイルが開かれないのは仕様なんだろうか。せっかく{clipboard}というマクロがあるのだから、テキスト+{clipboard}で同時に貼り付けられたらいいのに。

Day One

Day One – Journal 1.8.1
カテゴリ: ライフスタイル, 仕事効率化
現在の価格: 450円(サイズ: 32MB)

Day OneのURLスキームは dayone です。パラメータを付けていくつかの操作ができるようになっています。

Command URL
Open Day One dayone://
Start an entry dayone://post?entry=”entry body”
Open Entries list dayone://entries
Open Calendar dayone://calendar
Open Starred dayone://starred
Edit Entry dayone://edit?entryId=[UUID]
Preferences dayone://preferences

引用:Day One サポートページ

あとがき

どれも一長一短ありますね。x-callback-urlはNotesyで初めて知りました。

Day OneはURLスキーム実装当時、URLエンコードしても文字化けしていました。気付かない内に修正されていたようです。他と少し趣の違うアプリですが、今回まとめに入れました。

上記した情報が公式サイトやマニュアルに載っていない事が意外と多い。今回まとめた情報の中には、全然関係ないブログのコメントから得たものもあったりで、せっかく実装したのに知られないのは残念だなと思いました。

Nebulous NotesとLaunch Center Proで簡単にTaskPaperへ登録する

Nebulous Notesが先日のバージョンアップでURLスキーム経由のテキスト追加に対応しました。それとLaunch Center ProのPrompt機能を使ってTaskPaperへTodoを登録します。これがかなり楽。

アプリを3つとも使っている人はかなり少なそうですが一応メモ。

なお、この記事には元ネタがあります(英語)。

やり方

TaskPaperは自由度の高いアプリなので様々な使い方があると思いますが、俺はInbox用のファイルを作ってとにかく追記しています。それから整理。

  1. まずはTaskPaperを管理しているフォルダ(デフォルトはTaskPaper)にInbox.txtを作成します。
    nn-lc_tp_01
  2. 作成したらNebulous Notesで開きます。開くだけでOKです。すぐに閉じて構いません。
  3. Launch Center Proに以下のURLを登録します。作業フォルダを変更している人は書き換えてください。
    nebulous://TaskPaper/Inbox.txt?prepend=%2d%20[prompt]
    nn-lc_tp_02

使い方

nn-lc_tp_03

Launch Center Proを起動。上記で作ったアクションをタップするとプロンプトが表示されるので、タスクを入力してGoをタップするだけ。Nebulous Notesが起動してInbox.txtに追記されていれば成功です。

nn-lc_tp_04

Twitterで見かけてからこの方法を使っています。Launch Center Proをドックに置いているのでとても便利。

URLのPrependは前方追加。後方追加にしたい時はappendに書き換えてください。TaskPaper for MacのQuick Entry Windowと合わせて- は事前にURLに含めました(%2d%20がそれ)。必要無ければ削除してください。

あとがき

これまでは追記できるEvernote補助アプリを使っていましたが、直接TaskPaperで見るファイルに追記できるのでこっちの方が楽です。

説明は省きますが、TextforceでもNebulous Notesと同じことができます。

Nebulous Notes (for Dropbox) 6.0
カテゴリ: 仕事効率化, ユーティリティ
現在の価格: 450円(サイズ: 10.8MB)
Launch Center Pro 1.0.4
カテゴリ: 仕事効率化, ユーティリティ
現在の価格: 250円(サイズ: 18.2MB)
TaskPaper — Simple to-do lists 2.1.1
カテゴリ: 仕事効率化, ユーティリティ
現在の価格: 850円(サイズ: 4.9MB)