WorkFlowy→ブログエディタ転送スクリプト(デラックス版)

WorkFlowy→ブログエディタ転送スクリプト(デラックス版)

WorkFlowyのアウトラインをブログエディタに転送するHandyFlowy用の機能拡張スクリプトです。

「SLPRO X(するぷろ X)」または「PressSync」や「クリップボード」に転送できます。

デラックス版と言うほどのものかどうかわかりませんが、もう一つのほうがシンプル版なので。

【2017-10-27:更新】長いHTMLタグがあると上手く変換されない場合がある不具合を修正しました。

変換ルール

  • Zoomしているトピック名がタイトルになります。「SLPRO X版」と「クリップボード版」は<h1>が付きますが、「PressSync版」は<h1>は付きません。

  • 子トピックがあるトピックは階層に合わせた見出し<h数字>になります。

  • 子トピックがないトピックは場合は本文<p>になります。

  • 「bq」とだけ書いたトピックはその子孫トピック全体を<blockquote>タグで囲んで出力します。

  • 「ul」とだけ書いたトピックはその子孫トピックを<li>タグにして、全体を<ul>タグで囲んで出力します。

  • 「ol」とだけ書いたトピックはその子孫トピックを<li>タグにして、全体を<ol>タグで囲んで出力します。

  • <li>タグになったトピックの子トピックは出力されますが、孫トピック以降は無視します。(出力しません)

  • 文字修飾(太字・*斜体*・下線)はそのまま<B> <I> <U>タグ付きで出力されます。

  • ノートは無視します(出力しません)。

  • 折りたたまれていて、見えていないトピックも無視します(出力しません)。また、見出しにもなりません。

  • 本文になった場合、トピックごとに<p>タグ付きで出力されます。

  • 本文に書かれたHTMLタグはそのまま出力します。そのため、本文に<&lt;&&amp;という風に書く必要があります。【2017-10-19追加】

変換例

WorkFlopwyのアウトラインがこのようになっている状態1でスクリプトを起動すると、

このようにHTMLに変換したものが、「SLPRO X」または「PressSync」に転送されます。

タイトル←にZoomInしてスクリプトを実行する
<h2>見出し1</h2>
<p>本文1−1</p>
<p>本文1−2</p>
<h3>見出し1−1</h3>
<p>本文1−1−1</p>
<p>本文1−1−2</p>
<h4>見出し1−1−1</h4>
<p>本文1−1−1−1</p>
<p>本文1−1−1−2</p>
<h4>見出し(ul&olのテスト)</h4>
<p>本文ulのテスト</p>
<ul>
    <li>
        <p>ULの子1</p>
    </li>
    <li>
        <p>ULの子2</p>
    </li>
</ul>
<p>本文olのテスト</p>
<ol>
    <li>
        <p>OLの子1</p>
    </li>
    <li>
        <p>OLの子2</p>
        <p>ここは親に含まれます1</p>
        <p>ここは親に含まれます2</p>
    </li>
    <li>
        <p>OLの子3</p>
    </li>
</ol>
<h3>見出し1−2</h3>
<p>本文1−2−1</p>
<p>本文1−2−2(bqのテスト)</p>
<blockquote>
    <p>BQ子1</p>
    <p>BQ子2</p>
</blockquote>
<p>本文1−2−3</p>
<p>見出しにならない(折りたたまれている)</p>
<p>本文1−4</p>

※ 見やすいようにインデントを入れています。実際にはインデント無しになります。

HandyFlowy用インストールスクリプト

次のURLスキームをWorkFlowyにコピーして、HandyFlowyでインストールしてください。

また、HandyFlowyをインストールしてある端末でこのブログを御覧になっている方は、「HandyFlowyでインストール可能な公開トピックを開く」からインストールすることができます。

SLPRO X 用

WF2BlogEDeluxe4SlproX

handyflowy://import?name=WF2BlogEDeluxe4SlproX&script=!function()%7Bfunction%20e(e)%7Breturn%20e.replace(%2F%26lt%3B%2Fg%2C%22%3C%22).replace(%2F%26gt%3B%2Fg%2C%22%3E%22).replace(%2F%26quot%3B%2Fg%2C'%22').replace(%2F%26amp%3B%2Fg%2C%22%26%22)%7Dfunction%20t(t%2Cn)%7Bvar%20l%3Dt%3F%22%3C%22%2Bt%2B%22%3E%22%3A%22%3Cp%3E%22%2Cr%3Dt%3F%22%3C%2F%22%2Bt%2B%22%3E%22%3A%22%3C%2Fp%3E%22%3Breturn%20n.getName().getContentText().trim().length%3Fl%2Be(n.getName().getContentText())%2Br%2B%22%5Cn%22%3A%22%22%7Dfunction%20n(e)%7Bfor(var%20n%3D%22%3Cblockquote%3E%5Cn%22%2Cl%3De.getVisibleChildren()%2Cr%3Dl.length%2Co%3D0%3Bo%3Cr%3Bo%2B%2B)0%3D%3D%3D(e%3Dl.eq(o)).getVisibleChildren().length%3Fn%2B%3Dt(%22%22%2Ce)%3An%2B%3Di(%22%22%2Ce)%3Breturn%20n%2B%3D%22%3C%2Fblockquote%3E%5Cn%22%7Dfunction%20l(e)%7Bvar%20l%3D%22%3Cli%3E%5Cn%22%2Ci%3De.getName().getContentText().trim().toLowerCase()%3Bif(%22ul%22%3D%3Di)l%2B%3Dr(%22ul%22%2Ce)%3Belse%20if(%22ol%22%3D%3Di)l%2B%3Dr(%22ol%22%2Ce)%3Belse%20if(%22bq%22%3D%3Di)l%2B%3Dn(e)%3Belse%7Bl%2B%3Dt(%22%22%2Ce)%3Bfor(var%20o%3De.getVisibleChildren()%2Cg%3Do.length%2Ca%3D0%3Ba%3Cg%3Ba%2B%2B)l%2B%3Dt(%22%22%2Co.eq(a))%7Dreturn%20l%2B%3D%22%3C%2Fli%3E%5Cn%22%7Dfunction%20r(e%2Ct)%7Bfor(var%20n%3D%22%3C%22%2Be%2B%22%3E%5Cn%22%2Cr%3Dt.getVisibleChildren()%2Ci%3Dr.length%2Co%3D0%3Bo%3Ci%3Bo%2B%2B)n%2B%3Dl(r.eq(o))%3Breturn%20n%2B%3D%22%3C%2F%22%2Be%2B%22%3E%5Cn%22%7Dfunction%20i(e%2Cl)%7Bvar%20o%3D%22%22%2Cg%3D%22h%22%2Be%2Ca%3Dl.getName().getContentText().trim().toLowerCase()%3Bif(%22ul%22%3D%3Da)o%2B%3Dr(%22ul%22%2Cl)%3Belse%20if(%22ol%22%3D%3Da)o%2B%3Dr(%22ol%22%2Cl)%3Belse%20if(%22bq%22%3D%3Da)o%2B%3Dn(l)%3Belse%7Bo%2B%3Dt(g%2Cl)%3Bfor(var%20u%3Dl.getVisibleChildren()%2Cf%3Du.length%2Cs%3D0%3Bs%3Cf%3Bs%2B%2B)%7Bvar%20c%3Du.eq(s)%3B0%3D%3D%3Dc.getVisibleChildren().length%3Fo%2B%3Dt(%22%22%2Cc)%3Ao%2B%3Di(%22%22%3D%3De%3F%22%22%3Ae%2B1%2Cc)%7D%7Dreturn%20o%7Dvar%20o%3Di(1%2C%24(%22.selected%22))%3Bwindow.open(%22slpro-x%3A%2F%2F%3Fq%3D%22%2BencodeURIComponent(o))%7D()%3B%0A

PressSync用

WF2BlogEDeluxe4PressSync

handyflowy://import?name=WF2BlogEDeluxe4PressSync&script=!function()%7Bfunction%20e(e)%7Breturn%20e.replace(%2F%26lt%3B%2Fg%2C%22%3C%22).replace(%2F%26gt%3B%2Fg%2C%22%3E%22).replace(%2F%26quot%3B%2Fg%2C'%22').replace(%2F%26amp%3B%2Fg%2C%22%26%22)%7Dfunction%20t(t%2Cn)%7Bvar%20l%3Dt%3F%22%3C%22%2Bt%2B%22%3E%22%3A%22%3Cp%3E%22%2Cr%3Dt%3F%22%3C%2F%22%2Bt%2B%22%3E%22%3A%22%3C%2Fp%3E%22%3Breturn%20n.getName().getContentText().trim().length%3Fl%2Be(n.getName().getContentText())%2Br%2B%22%5Cn%22%3A%22%22%7Dfunction%20n(e)%7Bfor(var%20n%3D%22%3Cblockquote%3E%5Cn%22%2Cl%3De.getVisibleChildren()%2Cr%3Dl.length%2Co%3D0%3Bo%3Cr%3Bo%2B%2B)0%3D%3D%3D(e%3Dl.eq(o)).getVisibleChildren().length%3Fn%2B%3Dt(%22%22%2Ce)%3An%2B%3Di(%22%22%2Ce)%3Breturn%20n%2B%3D%22%3C%2Fblockquote%3E%5Cn%22%7Dfunction%20l(e)%7Bvar%20l%3D%22%3Cli%3E%5Cn%22%2Ci%3De.getName().getContentText().trim().toLowerCase()%3Bif(%22ul%22%3D%3Di)l%2B%3Dr(%22ul%22%2Ce)%3Belse%20if(%22ol%22%3D%3Di)l%2B%3Dr(%22ol%22%2Ce)%3Belse%20if(%22bq%22%3D%3Di)l%2B%3Dn(e)%3Belse%7Bl%2B%3Dt(%22%22%2Ce)%3Bfor(var%20o%3De.getVisibleChildren()%2Cg%3Do.length%2Ca%3D0%3Ba%3Cg%3Ba%2B%2B)l%2B%3Dt(%22%22%2Co.eq(a))%7Dreturn%20l%2B%3D%22%3C%2Fli%3E%5Cn%22%7Dfunction%20r(e%2Ct)%7Bfor(var%20n%3D%22%3C%22%2Be%2B%22%3E%5Cn%22%2Cr%3Dt.getVisibleChildren()%2Ci%3Dr.length%2Co%3D0%3Bo%3Ci%3Bo%2B%2B)n%2B%3Dl(r.eq(o))%3Breturn%20n%2B%3D%22%3C%2F%22%2Be%2B%22%3E%5Cn%22%7Dfunction%20i(e%2Cl)%7Bvar%20o%3D%22%22%2Cg%3D%22h%22%2Be%2Ca%3Dl.getName().getContentText().trim().toLowerCase()%3Bif(%22ul%22%3D%3Da)o%2B%3Dr(%22ul%22%2Cl)%3Belse%20if(%22ol%22%3D%3Da)o%2B%3Dr(%22ol%22%2Cl)%3Belse%20if(%22bq%22%3D%3Da)o%2B%3Dn(l)%3Belse%7Bo%2B%3Dt(g%2Cl)%3Bfor(var%20s%3Dl.getVisibleChildren()%2Cu%3Ds.length%2Cc%3D0%3Bc%3Cu%3Bc%2B%2B)%7Bvar%20f%3Ds.eq(c)%3B0%3D%3D%3Df.getVisibleChildren().length%3Fo%2B%3Dt(%22%22%2Cf)%3Ao%2B%3Di(%22%22%3D%3De%3F%22%22%3Ae%2B1%2Cf)%7D%7Dreturn%20o%7Dvar%20o%3Di(1%2C%24(%22.selected%22))%3Bo%3D%24(%22.selected%22).getName().getContentText()%2Bo.replace(%2F%3Ch1%3E.*%3C%5C%2Fh1%3E%2F%2C%22%22)%2Cwindow.open(%22presssync%3A%2F%2F%2FnewPost%3Fcontent%3D%22%2BencodeURIComponent(o))%7D()%3B%0A

クリップボードに出力

WF2BlogEDeluxe4CopyToClipboard

handyflowy://import?name=WF2BlogEDeluxe4CopyToClipboard&script=!function()%7Bfunction%20e(e)%7Breturn%20e.replace(%2F%26lt%3B%2Fg%2C%22%3C%22).replace(%2F%26gt%3B%2Fg%2C%22%3E%22).replace(%2F%26quot%3B%2Fg%2C'%22').replace(%2F%26amp%3B%2Fg%2C%22%26%22)%7Dfunction%20t(t%2Cn)%7Bvar%20l%3Dt%3F%22%3C%22%2Bt%2B%22%3E%22%3A%22%3Cp%3E%22%2Cr%3Dt%3F%22%3C%2F%22%2Bt%2B%22%3E%22%3A%22%3C%2Fp%3E%22%3Breturn%20n.getName().getContentText().trim().length%3Fl%2Be(n.getName().getContentText())%2Br%2B%22%5Cn%22%3A%22%22%7Dfunction%20n(e)%7Bfor(var%20n%3D%22%3Cblockquote%3E%5Cn%22%2Cl%3De.getVisibleChildren()%2Cr%3Dl.length%2Co%3D0%3Bo%3Cr%3Bo%2B%2B)0%3D%3D%3D(e%3Dl.eq(o)).getVisibleChildren().length%3Fn%2B%3Dt(%22%22%2Ce)%3An%2B%3Di(%22%22%2Ce)%3Breturn%20n%2B%3D%22%3C%2Fblockquote%3E%5Cn%22%7Dfunction%20l(e)%7Bvar%20l%3D%22%3Cli%3E%5Cn%22%2Ci%3De.getName().getContentText().trim().toLowerCase()%3Bif(%22ul%22%3D%3Di)l%2B%3Dr(%22ul%22%2Ce)%3Belse%20if(%22ol%22%3D%3Di)l%2B%3Dr(%22ol%22%2Ce)%3Belse%20if(%22bq%22%3D%3Di)l%2B%3Dn(e)%3Belse%7Bl%2B%3Dt(%22%22%2Ce)%3Bfor(var%20o%3De.getVisibleChildren()%2Cg%3Do.length%2Ca%3D0%3Ba%3Cg%3Ba%2B%2B)l%2B%3Dt(%22%22%2Co.eq(a))%7Dreturn%20l%2B%3D%22%3C%2Fli%3E%5Cn%22%7Dfunction%20r(e%2Ct)%7Bfor(var%20n%3D%22%3C%22%2Be%2B%22%3E%5Cn%22%2Cr%3Dt.getVisibleChildren()%2Ci%3Dr.length%2Co%3D0%3Bo%3Ci%3Bo%2B%2B)n%2B%3Dl(r.eq(o))%3Breturn%20n%2B%3D%22%3C%2F%22%2Be%2B%22%3E%5Cn%22%7Dfunction%20i(e%2Cl)%7Bvar%20o%3D%22%22%2Cg%3D%22h%22%2Be%2Ca%3Dl.getName().getContentText().trim().toLowerCase()%3Bif(%22ul%22%3D%3Da)o%2B%3Dr(%22ul%22%2Cl)%3Belse%20if(%22ol%22%3D%3Da)o%2B%3Dr(%22ol%22%2Cl)%3Belse%20if(%22bq%22%3D%3Da)o%2B%3Dn(l)%3Belse%7Bo%2B%3Dt(g%2Cl)%3Bfor(var%20s%3Dl.getVisibleChildren()%2Cu%3Ds.length%2Cf%3D0%3Bf%3Cu%3Bf%2B%2B)%7Bvar%20C%3Ds.eq(f)%3B0%3D%3D%3DC.getVisibleChildren().length%3Fo%2B%3Dt(%22%22%2CC)%3Ao%2B%3Di(%22%22%3D%3De%3F%22%22%3Ae%2B1%2CC)%7D%7Dreturn%20o%7Dvar%20o%3Di(1%2C%24(%22.selected%22))%3Bwebkit.messageHandlers.CopyToClipboard.postMessage(o)%2Calert(%22Copied%20to%20Clipboard%22)%7D()%3B%0A

  1. 全文が見えるように DeskFlowy のスクリーンショットです。 [return]
まるみ avatar
About まるみ
iOS,Android アプリを作成しています。