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にアップロードしたファイル(掲載した画像も含む)
使用例
https://gyazo.com/74e9f9aac9672bcf8698cb9a62f6b78c
(エクスポートするもの)
https://gyazo.com/2802452d00874cbc7977d624acc63536
(置換前)
https://gyazo.com/92d693a2e4800da9d7a5ad4b9d21db45
(範囲選択して、ポップアップするボタンの中の「WF」クリック)
https://gyazo.com/329fcd66fa812f1d664c7847f4438f1f
(置換後)
コード
code:script.js
scrapbox.PopupMenu.addButton({
title: 'WF', //"WF"はポップアップするボタンの名前。変更可能。
onClick: text =>{
////ハイパーリンク////
//Hyperlink with linktext
////文字装飾////
//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;
}
})
関連情報
/icons/hr.icon