Cosenseで選択範囲を「新規ページに分割」または「既存ページへの統合」をするUserScriptのカスタム例
Cosenseのページで選択範囲を「新規ページに分割」する機能と、選択範囲を「既存ページへ統合」する機能は、Cosenseに標準で搭載されていますが、これはそれとは少しだけ機能が違うUserScriptです。 違いは、
行き先のページにはfrom [元のページ]という内部リンクが付かない。
元のページにも[行き先のページ]という内部リンクを残さない。
選択範囲が1行のみでも使える
の3点です。
サンプル
「新規ページに分割」または「既存ページへの統合」をしたい範囲をマウスなどで選択したときにポップアップするボタンの中に「New / Merge」があるので、それをクリックします。
https://gyazo.com/d256ace046281ae86f4634b6fbf68e21
「選択範囲の1行目」と同じタイトルのページがまだ存在していないときは、新規ページへの分割が行われます:選択範囲の1行目が、新規ページのタイトルになります。選択範囲の2行目以降が、新規ページの本文となります。
https://gyazo.com/a7cf7ff55af767e4af2a0c64a7354b5d
(実行時点で[行き先のページ]が存在していなかった場合の実行例:選択範囲の1行目がタイトルになり、2行目以降がそのページに移される)
「選択範囲の1行目と同じタイトルのページ」がすでに存在しているときは、既存ページへの統合が行われます:選択範囲の2行目以降を、その既存のページに移します。
https://gyazo.com/14d9179cbb5919a620304a5a0ba936d7
(実行時点で[行き先のページ]がすでに存在している場合の実行例:選択範囲の2行目以降がそのページに移される)
選択範囲のテキストは、元のページからは無くなります。
元のページには、行き先のページへの内部リンクが残りません。
https://gyazo.com/1669c2ad67eac9e3021ac12c2dace405
なお、元のページでの選択範囲の1行目が「空白またはスペースのみ」である場合に実行すると、「タイトルが空白のページ」が新規に作られます。
https://gyazo.com/d8c64010d21a56c6569e97230a40d65f
コード
code:script.js
scrapbox.PopupMenu.addButton({
title: 'New / Merge', // ポップアップするボタンの名前(変更可能)
onClick: text => {
const lines = text.split(/\r\n/g); // 1行目が空または空白だけなら "new" に置き換える
if (!lines0 || lines0.trim() === "") { }
.trim()
.replace(/\^\+\.icon\]/gm, '')
const projectRoot = (() => {
const tmp = location.href.split('/');
tmp.pop();
return tmp.join('/');
})();
lines.shift();
const body = encodeURIComponent(lines.join('\n'));
const encodedTitle = encodeURIComponent(title);
window.open(${projectRoot}/${encodedTitle}?body=${body});
return ""; // 元のページにはリンクを残さない。
}
});
Cosense標準のポップアップボタンを非表示にするCSS
Cosenseのポップアップボタンのなかで、Cosenseが標準搭載しているほうの「新規ページに分割」および「既存ページへの統合」のボタンが不要になった場合は、UserCSSで非表示にすることができます。 code:style.css
div.split-page-button{display:none !important}
更新履歴
2025-06-10:処理対象の文字列(範囲選択された文字列)の1行目が空白またはスペースのみである場合は、1行目をnewに置き換える(すなわち、作成されるページのタイトルが空白になる)ようにコードを変更。
2025-06-07:公開
/icons/hr.icon