generated at
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階層下がる。

以下のものは、もともとMarkdownで表現されないか、もしくはWorkflowyがMarkdownで書き出さないので、再現されない(2024-08-03現在)。
段落(Paragraph, ¶)
行頭のチェックボックス(To-do)
文字の下線
文字色
文字の背景色
Complete(Ctrl+Enter)をした状態(=文字色が薄いグレーになり、打ち消し線が付いている)
Workflowyにアップロードしたファイル(掲載した画像も含む)

使用例
(エクスポートするもの)

(置換前)

(範囲選択して、ポップアップするボタンの中の「WF」クリック)

(置換後)

コード
script.js
scrapbox.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; } })

関連情報

hr