WorkFlowy を使っている方は、不要になったトピックはすぐに削除していますか?
これまで、私は、すぐに削除するか、一旦完了にして非表示にしておき、気が向いたときに削除していました。
ただ、以前、削除してしまったトピックを見返したくて後悔したことがありました。WorkFlowyから送られてくる差分メールやバックアップデータを見ても、削除したタイミングが悪かったのか、見返すことができませんでした。
それ以来、不要になったトピックはすぐに削除せず、まずは完了にして非表示にします。
そして、それらを月に1回、削除するのではなく、削除待ちトピック(ゴミ箱トピック)に移動させています。
このときに、今あるゴミ箱トピック(先月移動させたもの)を完全に削除するようにしています。
これにより、不要なトピックでも1ヶ月以上はWorkFlowyに残っていることになります。さらに、定期的に削除することにより、WorkFlowyのデータの軽量化を図っています。
ただ、トピックを完了にする操作は楽ですが、ゴミ箱トピックに移動させるのが、けっこう手間です。
しかし、最近、この作業に大変役立つスクリプトをHandyFlowyやMemoFlowyの開発者の@marumi_appさんが作ってくださいましたので、本記事で紹介します。
このブックマークレットは、パソコン(DeskFlowy)用とHandyFlowy用があります。
このDeskFlowy用のスクリプトは2種類あります。
◼︎CollectCompleted Items
このスクリプトを発動させると、Zoom inしているトピックの子トピックのうち完了トピックのみを「Completed Items」というトピックの子トピックにまとめてくれます。「Completed Items」とは、このスクリプトを発動することで自動的に作られるトピックです。
よって、あとは、この「Completed Items」をゴミ箱トピックへ移動させるだけです。
このスクリプトの登録方法は、以下のコードをDeskFlowy(WorkFlowy)へペーストし、リンク形式になるので、それをクリックするだけです。すると、自動的にExtensionScriptの中に登録されます。
deskflowy://import?name=CollectCompleted%20Items&script=!function()%7Bvar%20e%3D%24(%22.selected%22)%2Ct%3Dproject_tree.getProjectReferenceFromDomProject(e).getChildren()%2Cr%3Dt.filter(function(e)%7Breturn%20e.isCompleted()%7D)%3Bif(0%3D%3Dr.length)alert(%22Not%20found%20completed%20item.%22)%3Belse%7Bundo_redo.startOperationBatch()%3Bvar%20o%3DcreateNewProject(e%2Ct.length)%3Bo.editName()%2CgetCurrentlyFocusedContent().setAndSaveContentText(%22Completed%20Items%22)%2Cproject_tree.applyLocalMoveForProjectReferences(r%2Cproject_tree.getProjectReferenceFromDomProject(o)%2C0)%2Cundo_redo.finishOperationBatch()%7D%7D()%3B
◼︎Collect Select Items
トピックを選択して、このスクリプトを発動させると選択したトピックが「Select Items」というトピックの子トピックにまとめてくれます。「Select Items」とは、このスクリプトを発動させることで自動的に作成されるトピックです。
あとは、この「Select Items」をゴミ箱トピックに移動させるだけです。
前項のスクリプトは、完了トピックが対象でしたが、こちらは選択したトピックが対象になるというわけです。
コードは以下のとおりです。登録方法は前項と同様です。
deskflowy://import?name=Collect%20Select%20Items&script=!function()%7Bvar%20e%3D%24(%22.selected%22)%2Ct%3Dproject_tree.getProjectReferenceFromDomProject(e).getChildren()%2Cr%3DfilterReadOnlyProjects(%24(%22.addedToSelection%22)%2C!0)%3Bif(0%3D%3Dr.length)alert(%22Not%20found%20select%20item.%22)%3Belse%7Br%3Dproject_tree.getProjectReferencesFromDomProjects(r)%2Cundo_redo.startOperationBatch()%3Bvar%20o%3DcreateNewProject(e%2Ct.length)%3Bo.editName()%2CgetCurrentlyFocusedContent().setAndSaveContentText(%22Select%20Items%22)%2Cproject_tree.applyLocalMoveForProjectReferences(r%2Cproject_tree.getProjectReferenceFromDomProject(o)%2C0)%2Cundo_redo.finishOperationBatch()%7D%7D()%3B
2. HandyFlowy用
◼︎Collect Completed Items
前項のDeskFlowyの1つ目のスクリプト「Collect Completed Items」のHandyFlowy版です。
スクリプトを発動させたときの動きはDeskFlowy版と同じです。
コードは以下のとおりです。
handyflowy://import?name=Collect%20Completed%20Items&script=!function()%7Bvar%20e%3D%24(%22.selected%22)%2Ct%3Dproject_tree.getProjectReferenceFromDomProject(e).getChildren()%2Cr%3Dt.filter(function(e)%7Breturn%20e.isCompleted()%7D)%3Bif(0%3D%3Dr.length)alert(%22Not%20found%20completed%20item.%22)%3Belse%7Bundo_redo.startOperationBatch()%3Bvar%20o%3DcreateNewProject(e%2Ct.length)%3Bo.editName()%2CgetCurrentlyFocusedContent().setAndSaveContentText(%22Completed%20Items%22)%2Cproject_tree.applyLocalMoveForProjectReferences(r%2Cproject_tree.getProjectReferenceFromDomProject(o)%2C0)%2Cundo_redo.finishOperationBatch()%7D%7D()%3B
このコードをHandyFlowyのトピックにペーストし、リンク形式になるので、それをタップすると機能拡張スクリプトとして登録できます。
ちなみに、前項のDeskFlowyの2つ目のスクリプト「Collect Select Items」のHandyFlowy版はありません。
残念ながら、モバイル版のWorkFlowyにはトピックを選択することができないからだそうです。
⒊ おわりに
この完了トピックを1つにまとめたり、選択したトピックを1つにまとめたりできるのは、今回紹介したゴミ箱トピックへの移動の他にもいろいろ使い道がありそうです。
他にいい使い道を思いついたら、また、記事にしたいと思います。