WorkflowyからMarkdown形式でエクスポートした内容をCosense形式に変換するUserScript
機能
ハイパーリンクを再現: [Google](https://www.google.com/)
→ [Google https://www.google.com/]
文字装飾を再現
Bold: **hoge**
→ [* hoge]
イタリック: *hoge*
→ [/ hoge]
見出しを大きな文字へ置換
H1→ [*** hoge]
H2→ [** hoge]
タグ用の @
を #
へ置換(行頭またはスペースの直後に @
がある場合のみ)
階層構造を再現(インデントの個数を調整する)
深さ6階層まで対応。
"Export"からエクスポートした場合は、最上位のものは階層化しない(下記の使用例の"test"のような位置)。
"Export all"からエクスポートした場合は、最上位のものも階層化される。
noteは引用形式( > hoge
)に置き換わり、位置が1階層下がる。
段落(Paragraph, ¶)
行頭のチェックボックス(To-do)
文字の下線
文字色
文字の背景色
Complete(Ctrl+Enter)をした状態(=文字色が薄いグレーになり、打ち消し線が付いている)
Workflowyにアップロードしたファイル(掲載した画像も含む)
使用例
(エクスポートするもの)
(置換前)
(範囲選択して、ポップアップするボタンの中の「WF」クリック)
(置換後)
コード
script.jsscrapbox.PopupMenu.addButton({
title: 'WF', //"WF"はポップアップするボタンの名前。変更可能。
onClick: text =>{
////ハイパーリンク////
//Hyperlink with linktext
//e.g. [Google](https://www.google.com)
text=text.split(/\n/).map(line => line.replace(/\[([^\]]+)\]\((https?:\/\/[\w/:%#\$&\?\(\)~\.=\+\-]+)\)/g,'[$1 $2]')).join('\n')
////文字装飾////
//Boldを太字に置換
text=text.split(/\n/).map(line => line.replace(/\*{2}([^*]+)\*{2}/g,'[* $1]')).join('\n')
//イタリック
text=text.split(/\n/).map(line => line.replace(/\*([^*]+)\*/g,'[/ $1]')).join('\n')
////見出しを大きな文字へ置換////
//H1
text=text.split(/\n/).map(line => line.replace(/(^|- )#\s+([^#]+)/g,'$1[*** $2]')).join('\n')
//H2
text=text.split(/\n/).map(line => line.replace(/(^|- )#{2}\s+([^#]+)/g,'$1[** $2]')).join('\n')
//タグ用の@を#に置換(行頭またはスペースの直後のみ)
text=text.split(/\n/).map(line => line.replace(/(^|\s+)@/g,'$1#')).join('\n')
////インデント個数の調整////
//行頭から連続している半角スペースn個を(n/2+1)個に置換し、行頭マーカー("- ")を除去。
//一応、6階層まで対応。
//インデント0個で行頭マーカー("- ")あり→インデント1個
text=text.split(/\n/).map(line => line.replace(/^- /g,' ')).join('\n')
//2個→2個
text=text.split(/\n/).map(line => line.replace(/^\s{2}- /g,' ')).join('\n')
//4個→3個
text=text.split(/\n/).map(line => line.replace(/^\s{4}- /g,' ')).join('\n')
//6個→4個
text=text.split(/\n/).map(line => line.replace(/^\s{6}- /g,' ')).join('\n')
//8個→5個
text=text.split(/\n/).map(line => line.replace(/^\s{8}- /g,' ')).join('\n')
//10個→6個
text=text.split(/\n/).map(line => line.replace(/^\s{10}- /g,' ')).join('\n')
return text;
}
})
関連情報