HandyFlowyは高機能で便利だが、いかんせんオフライン起動ができないため、ネット接続状況の悪い時間帯にタスク管理をしようとすると、やる事をさっと探したい時も、完了した事をさっと記録したい時も、最初の読み込みが遅くフットワークが重くなってしまう。(MVNO回線利用者の悲哀。輻輳している時は泣きたくなる)
そこで、以前に彩郎氏に紹介して頂いた、マロ。氏作の、「Workflowyでアウトラインの最下層のトピックをTodoリストにするbookmarklet|マロ。|note」の存在を思い出して試してみた。(このブックマークレットの作られた経緯については彩朗氏の『WorkFlowyとタスク管理をつなぐ「最下層トピックを切り取ってフラットに並べるタスク管理版ハサミスクリプト」』に詳しく書かれている。)
Safariで開いたWorkFlowyからそのスクリプトで一旦リストを作っておけば、そのタブを閉じさえしなければ、次回Safariを起動した時にオフラインでさっと表示できて使いやすいはずである。
試したところ以前は気付かなかったが、暫定仕様のスマホ版だと、リストが画面からはみ出してしまうほど長い時にスクロールしたくてもできない不具合があった。
スクロールするために画面に指をスライドさせると、触っている部分にあるタスクが動いてしまう。
また、完了したタスクのチェックボックスにチェックする機能はあるが、どうせならそれを外部サービスと連携させたい。例えばEvernoteに完了したタスクを記録するとか。
そこで、HandyFlowyからTrelloに、同じように最下層の「タスク」を転送する為の機能拡張スクリプトができないか試してみた。
JavascriptからTrelloをURL Schemeで直接いじれるらしいが、リストを追加する方法が分からなかったので、WorkflowのレシピをURL Schemeで呼び出す方式にしてみた。
以前作った「完了タスクを #Markdown で出力する #HandyFlowy の機能拡張スクリプト」のように再帰呼び出しでアウトラインを辿っていく仕組みだが、今回はjQueryを使いかなり簡略化した。
想定している使い方は、
- 一日の最初にこれでHandyFlowyからTrelloに転送
- 日中はTrelloで処理
- 一日の終わりに、完了や変更をHandyFlowyに反映させる
HandyFlowyは母艦として利用。
HF2Trello via Workflow
var readTasks = function (ele, nestL, parentN) { var tasks = ''; $(ele).each(function(){ var className = $(this).attr('class'); var classNameS = className.split(' '); var projectId = ($(this).attr("projectid").split("-"))[4]; var name = $(this).find("> .name").text(); var note = $(this).find("> .notes").text().replace(/\n/g,"").replace(/\r/g,"").replace(/\t/g,""); if (classNameS.indexOf("open")>=0) { var k = (nestL == 0) ? name : name + " / " + parentN; tasks += readTasks($(this).find("> .children > .project"), nestL + 1, k) } else { tasks += name + " (" + parentN + ")" + String.fromCharCode(9) + note + String.fromCharCode(9) + projectId + String.fromCharCode(10); } }); return tasks; } var e= $('.project.selected > .children > .project'); var taskList = readTasks(e, 0, ''); taskList = taskList.substr(0, taskList.length-1) window.open('workflow://run-workflow?name=clip_to_Trello&input=text&text=' + encodeURIComponent(taskList)); /* webkit.messageHandlers.CopyToClipboard.postMessage(taskList); window.open('workflow://run-workflow?name=clip_to_Trello&input=clipboard'); */
上の機能拡張スクリプトから以下のWorkflowのレシピ「clip_to_Trello」を呼び出す。
※ 2つ目のSplit TextのCustomの値は何も入力していないように見えるが、タブ文字が入力してある。
この機能拡張スクリプトを次のアウトラインを表示している時に実行すると、
次のように、あらかじめ作っておいた「ToDo」という名前のボードに、日付と時刻をタイトルにしたリストが作られ、そこに各タスクがカードとして追加される。
カードのディスクリプションの中にそのタスクをHandyFlowyで開くための「handyflowy://〜」で始まるURL Schemeを書きたかったが、クリカブルリンクにならなかったので代わりに「https://〜」から始まるWorkFlowyのリンクを書き込んだ。
完了タスクのEvernoteへの記録はIFTTTでTrelloとEvernoteを連携させればできるだろう。
改定1 2016-11-19
ノートにタブ文字が含まれている時の不具合に対処した。