DeskFlowy/HandyFlowyをプログラミング環境として活用する Scripter

スクリプター:撮影現場で場面の一貫性を保つために状況を記録する係。


Scripter

HandyFlowy/DeskFlowyで機能拡張スクリプトを管理する ScriptMaker
プリプリは尊い。HandyFlowy用のScriptMakerが走らないので、DeskFlowyでも使える汎用に書き換えてみました。下記リンクはHandyFlowy用ですが、展開したリンクをDeskF...

ScriptMakerをいじっていたら疑問が浮かんできました。スクリプトをノートに書く必要はあるのか、と。直接トピックにスクリプトを書き、そのまま登録するほうが手軽そう。

もちろん、そういう使い方をWorkFlowyは想定していません。想定していないからこそ、そこを攻め崩したい。それって「ジャズ」だよなあ。元曲が秘める潜在能力を引きずり出す。そのためのスクリプトを作ってみました。

登録リンクはこちら → http://tinyurl.com/yanh6qfe


スクリプトの書き方

見出しにスクリプト名、下位トピックにスクリプト本体を並べる。そういう方法です。

アウトライナーはプログラミングと相性がいい。モジュールがブロック化されて管理しやすくなります。実行順の入れ替えをする。ブロックごとコピーする。不要になったサブルーチンを非表示にする。どの体験も面白い。今までにない感覚がここにはある。


スクリプトの登録

Scripterを実行すると、トピック全体をスクリプトとして機能拡張パネルに登録します。階層構造はインデントとして読み込まれます。あとで保守しやすい。閉じ括弧の扱いが不自然だけど、ブロック化の観点から下位トピックに置いて使っています。悪くなさそう。


応用例 Bear

Bearに階層構造ごと転送するスクリプトを組んでみました。Bearという名のトピックを作り、その下位トピックに下記スクリプトを貼り付けてください。

  var d=0;
var p=selectOnActivePage(".selected").getProject();
var s=child(p);
url="bear://x-callback-url/create?text="+encodeURIComponent(s);
open(url);

function child(x){
d++;
var a=x.getName().text()+"\n";
var c=x.getVisibleChildren();
for(var i=0;i<c.length;i++){
for(var j=0;j<d;j++) a+=" ";
a+=child(c.eq(i));
}
d--;
return a;
}

Scripterを実行すると機能拡張パネルに追加されます。DeskFlowyは出力が揃っていないので、Bearに転送してから加工する。これはこれで便利じゃないでしょうか。

このスクリプトは他のスクリプトを作るテンプレートになります。トピックを取得する child(p)。URLスキームを実行する open(url) 。どちらもお役に立ちますよ。


まとめ

WorkFlowyでのプログラミングは楽しいです。書きやすい。動かしやすい。試しやすい。実行時にエラーの行番号が出るわけじゃないから、開発環境とは呼べないですが、そこあたりは根性でカバーするしかないところ。Javascriptのルーズな感じが使いやすい。