WorkFlowy

WorkFlowyアプリ「HandyFlowy」でブログを書くなら使ってほしい自動でHTMLに変換するスクリプト〜「PressSync用」「SLPRO X用」「クリップボード出力」〜

当ブログでは、以下のとおり、WorkFlowy アプリ「HandyFlowy」でブログの下書きを書く記事を何度も公開してきました。

その記事の中で、HandyFlowyで書いた下書きを、ブログ用のHTMLに変換するHandyFlowyのスクリプトの便利さを取り上げてきました。

HandyFlowyでスクリプトを起動させると、HandyFlowyの下書きの内容に自動でブログ用のHTMLが付加された状態でiOSアプリ「PressSync」が起動しするものです。

ただ、このスクリプトですが、専門的なことはわかりませんが、2017年9月にWorkFlowyの仕様が一部変更になったことにより使えなくなっていました。

ところが、HandyFlowyの開発者@marumi_appさんのご好意により、同趣旨のスクリプトを作っていただきました。

詳しくは、@marumi_appさんの以下の記事参照いただくとして、本記事では概要を紹介したいと思います。

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

HandyFlowy

無料
(2018.06.10時点)
posted with ポチレバ
PressSync Pro for WordPress

360円
(2018.06.09時点)
posted with ポチレバ

1. スクリプトの内容

前述したとおり、HandyFlowyでスクリプトを発動させるとPressSyncが起動します。

PressSyncの下書き画面のタイトル欄と本文欄には、HandyFlowyで書いた内容にブログ用のHTMLが自動で付加されたデータが入力された状態になっています。

あとは、投稿ボタンを押すだけですので、HandyFlowyでブログを書くには、大変便利なスクリプトです。

このスクリプトは、PressSync用だけではなく、「SLPROX」用もあります。

また、クリップボードに出力するだけのものもありますので、「PressSync」と「SLPRO X」以外のブログアプリを使っている場合は、こちらを利用することになります。

するぷろ X for WordPress & MT

1,600円
(2018.06.13時点)
posted with ポチレバ

2. スクリプトの挙動

HandyFlowyで書いた内容には、どのようにHTMLが付加されるのか。

先の@marumi_appさんの記事「WorkFlowy→ブログエディタ転送スクリプト(デラックス版)」から以下に抜粋させていただきます。

  • Zoomしているトピック名がタイトルになります。「SLPRO X版」と「クリップボード版」は< h1 >が付きますが、「PressSync版」は < h1 >は付きません。
  • 子トピックがあるトピックは階層に合わせた見出し< h数字 >になります。
  • 子トピックがないトピックは場合は本文< p >になります。
  • 「bq」とだけ書いたトピックはその子孫トピック全体を< blockquote >タグで囲んで出力します。
  • 「ul」とだけ書いたトピックはその子孫トピックを< li >タグにして、全体を< ul >タグで囲んで出力します。
  • 「ol」とだけ書いたトピックはその子孫トピックを< li >タグにして、全体を< ol >タグで囲んで出力します。
  • < li >タグになったトピックの子トピックは出力されますが、孫トピック以降は無視します。(出力しません)
  • 文字修飾(太字・*斜体*・下線)はそのまま< B > < I > < U >タグ付きで出力されます。
  • ノートは無視します(出力しません)。
  • 折りたたまれていて、見えていないトピックも無視します(出力しません)。また、見出しにもなりません。
  • 本文になった場合、トピックごとに< p >タグ付きで出力されます。
  • 本文に書かれたHTMLタグはそのまま出力します。そのため、本文に < は & amp;lt;、&は & amp;amp;という風に書く必要があります。【2017-10-19追加】

3. スクリプトの登録

WorkFlowyに以下のURLスキームをコピーして、コピーしたトピックをHandyFlowyでタップするとHandyFlowyに機能拡張スクリプトとしてインストールすることができます。

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

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%2Co%3Dt%3F%22%3C%2F%22%2Bt%2B%22%3E%22%3A%22%3C%2Fp%3E%22%3Breturn%20console.log(%22A%3A%22%2Cn.getName().getContentText())%2Cconsole.log(%22B%3A%22%2CdecodeURIComponent(n.getName().getContentText()))%2Cn.getName().getContentText().trim().length%3Fl%2Be(n.getName().getContentText())%2Bo%2B%22%5Cn%22%3A%22%22%7Dfunction%20n(e)%7Bfor(var%20n%3D%22%3Cblockquote%3E%5Cn%22%2Cl%3De.getVisibleChildren()%2Co%3Dl.length%2Ci%3D0%3Bi%3Co%3Bi%2B%2B)0%3D%3D%3D(e%3Dl.eq(i)).getVisibleChildren().length%3Fn%2B%3Dt(%22%22%2Ce)%3An%2B%3Dr(%22%22%2Ce)%3Breturn%20n%2B%3D%22%3C%2Fblockquote%3E%5Cn%22%7Dfunction%20l(e)%7Bvar%20l%3D%22%3Cli%3E%5Cn%22%2Cr%3De.getName().getContentText().trim().toLowerCase()%3Bif(%22ul%22%3D%3Dr)l%2B%3Do(%22ul%22%2Ce)%3Belse%20if(%22ol%22%3D%3Dr)l%2B%3Do(%22ol%22%2Ce)%3Belse%20if(%22bq%22%3D%3Dr)l%2B%3Dn(e)%3Belse%7Bl%2B%3Dt(%22%22%2Ce)%3Bfor(var%20i%3De.getVisibleChildren()%2Cg%3Di.length%2Ca%3D0%3Ba%3Cg%3Ba%2B%2B)l%2B%3Dt(%22%22%2Ci.eq(a))%7Dreturn%20l%2B%3D%22%3C%2Fli%3E%5Cn%22%7Dfunction%20o(e%2Ct)%7Bfor(var%20n%3D%22%3C%22%2Be%2B%22%3E%5Cn%22%2Co%3Dt.getVisibleChildren()%2Cr%3Do.length%2Ci%3D0%3Bi%3Cr%3Bi%2B%2B)n%2B%3Dl(o.eq(i))%3Breturn%20n%2B%3D%22%3C%2F%22%2Be%2B%22%3E%5Cn%22%7Dfunction%20r(e%2Cl)%7Bvar%20i%3D%22%22%2Cg%3D%22h%22%2Be%2Ca%3Dl.getName().getContentText().trim().toLowerCase()%3Bif(%22ul%22%3D%3Da)i%2B%3Do(%22ul%22%2Cl)%3Belse%20if(%22ol%22%3D%3Da)i%2B%3Do(%22ol%22%2Cl)%3Belse%20if(%22bq%22%3D%3Da)i%2B%3Dn(l)%3Belse%7Bi%2B%3Dt(g%2Cl)%3Bfor(var%20u%3Dl.getVisibleChildren()%2Cc%3Du.length%2Cs%3D0%3Bs%3Cc%3Bs%2B%2B)%7Bvar%20f%3Du.eq(s)%3B0%3D%3D%3Df.getVisibleChildren().length%3Fi%2B%3Dt(%22%22%2Cf)%3Ai%2B%3Dr(%22%22%3D%3De%3F%22%22%3Ae%2B1%2Cf)%7D%7Dreturn%20i%7Dvar%20i%3Dr(1%2C%24(%22.selected%22))%3Bwindow.open(%22slpro-x%3A%2F%2F%3Fq%3D%22%2BencodeURIComponent(i))%7D()%3B%0A

クリップボードに出力

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%2Co%3Dt%3F%22%3C%2F%22%2Bt%2B%22%3E%22%3A%22%3C%2Fp%3E%22%3Breturn%20console.log(%22A%3A%22%2Cn.getName().getContentText())%2Cconsole.log(%22B%3A%22%2CdecodeURIComponent(n.getName().getContentText()))%2Cn.getName().getContentText().trim().length%3Fl%2Be(n.getName().getContentText())%2Bo%2B%22%5Cn%22%3A%22%22%7Dfunction%20n(e)%7Bfor(var%20n%3D%22%3Cblockquote%3E%5Cn%22%2Cl%3De.getVisibleChildren()%2Co%3Dl.length%2Ci%3D0%3Bi%3Co%3Bi%2B%2B)0%3D%3D%3D(e%3Dl.eq(i)).getVisibleChildren().length%3Fn%2B%3Dt(%22%22%2Ce)%3An%2B%3Dr(%22%22%2Ce)%3Breturn%20n%2B%3D%22%3C%2Fblockquote%3E%5Cn%22%7Dfunction%20l(e)%7Bvar%20l%3D%22%3Cli%3E%5Cn%22%2Cr%3De.getName().getContentText().trim().toLowerCase()%3Bif(%22ul%22%3D%3Dr)l%2B%3Do(%22ul%22%2Ce)%3Belse%20if(%22ol%22%3D%3Dr)l%2B%3Do(%22ol%22%2Ce)%3Belse%20if(%22bq%22%3D%3Dr)l%2B%3Dn(e)%3Belse%7Bl%2B%3Dt(%22%22%2Ce)%3Bfor(var%20i%3De.getVisibleChildren()%2Cg%3Di.length%2Ca%3D0%3Ba%3Cg%3Ba%2B%2B)l%2B%3Dt(%22%22%2Ci.eq(a))%7Dreturn%20l%2B%3D%22%3C%2Fli%3E%5Cn%22%7Dfunction%20o(e%2Ct)%7Bfor(var%20n%3D%22%3C%22%2Be%2B%22%3E%5Cn%22%2Co%3Dt.getVisibleChildren()%2Cr%3Do.length%2Ci%3D0%3Bi%3Cr%3Bi%2B%2B)n%2B%3Dl(o.eq(i))%3Breturn%20n%2B%3D%22%3C%2F%22%2Be%2B%22%3E%5Cn%22%7Dfunction%20r(e%2Cl)%7Bvar%20i%3D%22%22%2Cg%3D%22h%22%2Be%2Ca%3Dl.getName().getContentText().trim().toLowerCase()%3Bif(%22ul%22%3D%3Da)i%2B%3Do(%22ul%22%2Cl)%3Belse%20if(%22ol%22%3D%3Da)i%2B%3Do(%22ol%22%2Cl)%3Belse%20if(%22bq%22%3D%3Da)i%2B%3Dn(l)%3Belse%7Bi%2B%3Dt(g%2Cl)%3Bfor(var%20s%3Dl.getVisibleChildren()%2Cu%3Ds.length%2CC%3D0%3BC%3Cu%3BC%2B%2B)%7Bvar%20c%3Ds.eq(C)%3B0%3D%3D%3Dc.getVisibleChildren().length%3Fi%2B%3Dt(%22%22%2Cc)%3Ai%2B%3Dr(%22%22%3D%3De%3F%22%22%3Ae%2B1%2Cc)%7D%7Dreturn%20i%7Dvar%20i%3Dr(1%2C%24(%22.selected%22))%3Bwebkit.messageHandlers.CopyToClipboard.postMessage(i)%2Calert(%22Copied%20to%20Clipboard%22)%7D()%3B%0A

4. おわりに

今回ご紹介したスクリプトは、HandyFlowyを使ってブログを書いている方には、ぜひ使っていただきたい大変便利なスクリプトです。

また、ブログを書くなら、階層化や文章の前後の入れ替えなどが簡単にできるHandyFlowyはオススメです。

当ブログでは、HandyFlowy(WorkFlowy)でブログを書くことにについて、以下のとおりいろいろ書いてきましたので、もし、ご興味のある内容がありましたら、ぜひご参考にしてください。

以上です。

本記事は参考になりましたか?

もし、少しでも参考になったことがあれば、フォロー&シェアしていただけるとうれしいです!!



また、「1分で読める書評ブログ」も運営していますので、興味があれば、ぜひご覧ください。

ABOUT ME
小田やかた
小田やかた
二人の子どもを持つ共働きサラリーマンパパ。現在、小学生と保育園児の子育てに奮闘中です。 本ブログは、iPhoneとPCでの情報管理、文章作成、タスク管理がメインテーマのブログです。知的生産のある暮らし(新しい価値を生む暮らし)を目指しています。 著書に『アウトライナーのレシピ 』『モブログの極意 』『Apple Watchで何ができるか』『たすくまの小技40』『Evernoteの小技100』『これで読書ノートが続く!本を探す・読む・活かすを効率的にする「Kindle×Evernote読書術」』がある。
関連記事