Workflowyでアウトラインの階層の組み替えを行うbookmarklet

アウトライナーで実験や調査などをメモを作る際に、下のように対象別にアウトラインを構成することが良くあります。

実験メモ
 実験1
   実験方法
      実験1の実験方法の詳細
   実験結果
      実験1の結果
   考察
      実験1の考察
   結論
      実験1の結論
 実験2
   実験方法
      実験2の実験方法の詳細
   実験結果
      実験2の結果
   考察
      実験2の考察
   結論
      実験2の結論
 実験3
   実験方法
      実験3の実験方法の詳細
   実験結果
      実験3の結果
   考察
      実験3の考察
   結論
      実験3の結論

このようにまとめたアウトラインをレポートや報告書にする際に、例えば実験の項目別に並べ替えたいというようなことがよくあります。上記の例だと以下のような形になります。

実験メモ
 実験方法
    実験1
      実験1の実験方法の詳細
    実験2
      実験2の実験方法の詳細
    実験3
      実験3の実験方法の詳細
 実験結果
    実験1
      実験1の結果
    実験2
      実験2の結果
    実験3
      実験3の結果
 考察
    実験1
     実験1の考察
    実験2
     実験2の考察
    実験3
     実験3の考察
 結論
    実験1
      実験1の結論
    実験2
      実験2の結論
    実験3
      実験3の結論

このように視点を切り替える=階層を組み替えることが時として必要になりますがアウトライナーならば項目を上下左右に動かしやすいので比較的簡単にできます。

が、そうはいってもそれなりに手間はかかってちょっと面倒です。
(第2階層だったトピックは増え、第3階層だったトピックは減るという操作も必要になり、単に移動だけでは済まないのです)

そこでWorkflowyで第2階層と第3階層を組み替えてアウトラインに再構成するためのbookmarkletを作りました。

【使い方】
組み替えたいアウトラインのExportからopmlを選択します。
次にbookmarkletを起動するとポップアップに変換されたアウトラインがopml形式で出力されます。
出力されたopmlをコピーし、Workflowy上でペーストすると組み替えられたアウトラインが作成されます。

ブックマークレットの作り方はここでは割愛します。またiPhone等ではWorkflowyのexportが対応していなかったり、文字選択したままブックマークレットを起動できないため使えませんのでご了承ください。

ソースコードは以下になります。

javascript:(function(){var level=1;var maxlv=1;var j=1;var chgtxt=window.getSelection().toString();chgtxt.replace(/[\n\r]/g,"\n");var myArray=new Array;var x=[];var myArray=chgtxt.split("\n");for(i=0;i<myArray.length;i=i+1){if(~myArray[i].indexOf('<outline text="')){y=[];tpc="";nt="";tpc=myArray[i].slice(myArray[i].indexOf('<outline text="')+15);tpc=tpc.slice(0,tpc.indexOf('"'));if(~myArray[i].indexOf('_note="')){nt=myArray[i].slice(myArray[i].indexOf('_note="')+7);nt=nt.slice(0,nt.indexOf('"'))}y.push(level);y.push(tpc);y.push(nt);x.push(y)}if(~myArray[i].indexOf("</outline>"))level--;if(~myArray[i].indexOf('" >')){level++;if(maxlv<level)maxlv=level}}var z=[];var AA=[];var lv0=0;for(i=0;i<x.length;i=i+1)if(i>0)if(x[i][0]>x[i-1][0]){z.push(x[i]);if(i==x.length-1){for(j=x[i][0];j<=maxlv;j=j+1)z.push("");AA.push(z)}}else{for(j=x[i][0];j<=maxlv;j=j+1)z.push("");AA.push(z);z=[];for(j=1;j<=x[i][0]-1;j=j+1)z.push(AA[AA.length-1][j-1]);z.push(x[i])}else z.push(x[i]);for(i=0;i<AA.length;i=i+1){sw=[];sw=AA[i][1];AA[i][1]=AA[i][2];AA[i][2]=sw;AA[i][1][0]=2;AA[i][2][0]=3}AA.sort(function(a,b){if(a[1]>b[1])return 1;if(a[1]<b[1])return-1;if(a[2]>b[2])return 1;if(a[2]<b[2])return-1;return 0});outtxt='<?xml version="1.0"?>\n<opml version="2.0">\n<head>\n</head>\n<body>\n';for(i=0;i<AA.length;i=i+1)for(j=0;j<maxlv;j=j+1)if(AA[i][j][1]!="")if(i==0){if(j==0)ed="";else if(level<AA[i][j][0])ed='" >\n';else if(level>=AA[i][j][0]){ed='" />\n';for(s=1;s<=level-AA[i][j][0];s=s+1)ed=ed+"</outline>\n"}if(AA[i][j][2]!="")nt='" _note="'+AA[i][j][2];else nt="";outtxt=outtxt+ed+'<outline text="'+AA[i][j][1]+nt;level=AA[i][j][0]}else{if(level<AA[i][j][0])ed='" >\n';else if(level>=AA[i][j][0]){ed='" />\n';for(s=1;s<=level-AA[i][j][0];s=s+1)ed=ed+"</outline>\n"}if(AA[i-1][j][1]!=AA[i][j][1]){if(AA[i][j][2]!="")nt='" _note="'+AA[i][j][2];else nt="";outtxt=outtxt+ed+'<outline text="'+AA[i][j][1]+nt;level=AA[i][j][0]}}for(s=1;s<=level-1;s=s+1)ed=ed+"</outline>\n";outtxt=outtxt+ed+"</body>\n</opml>";alert(outtxt);})();

※このページの内容は以上です。「投げ銭」歓迎しております。ご寄付いただいた投げ銭はツールのメンテナンスや要望追加の費用や開発モチベーションに当てさせていただきます。

この続きをみるには

この続き:0文字

Workflowyでアウトラインの階層の組み替えを行うbookmarklet

マロ。

100円

この記事が気に入ったら、サポートをしてみませんか?気軽にクリエイターを支援できます。

3

マロ。

コメントを投稿するには、 ログイン または 会員登録 をする必要があります。