generated at
別プロジェクトに転記するスクリプト
Scrapboxの記事を他のプロジェクトにコピーするためのメニューボタンを追加する
1. メニューボタンを押す
2. 自分が参加してるプロジェクトの一覧が出る
3. 選択したプロジェクトに新しいページが作られ、元のページの本文が代入される
プロジェクト一覧の取得方法に欠陥があって左上のメニューで「more」の中に入ってるプロジェクトは選択肢に現れない

Scrapbox が固まるようになったのでこのスクリプトは保留

使い方
UserScript を有効にして自分のユーザーページに以下の文を貼り付けてインポートできる
UserCSSはインポートしない方が良い(CSS で @import を使わない)ので丸々コピペすること
import.js
import '/api/code/kembo/別プロジェクトに転記するスクリプト/script.js'

style.css
a#Copy.tool-btn:hover { text-decoration: none } a#Copy.tool-btn::before { position: absolute; /* img 等他の要素を無視して絶対座標で配置する */ left: calc(46px/4); /* アイコンのための枠が 46px でアイコンがその半分だから余白は 1/4 */ font-size: 23px; /* scrapbox で使ってるアイコン */ content: '\E00A'; font-family: 'AppIcons'; } /* 元の画像アイコンは表示しない */ a#Copy.tool-btn img { opacity: 0; }

memo.txt
const Label = "Copy"; scrapbox.PageMenu.addMenu({ title: Label, image: "https://gyazo.com/ad5645959e04c169b2926b2b0e7fc93e/thumb/1000" }); /* 自分のプロジェクト一覧を取得 */ let projectName = scrapbox.Project.name; let projectList = []; let globalMenu = document.getElementsByClassName('global-menu-for-user')[0]; let length = globalMenu.childElementCount; let i = 0; while (i < length) { if (globalMenu.children[i].classList.contains("project-list-filter")) { i++; break; } } console.log(i); while (i < length) { let item = globalMenu.children[i]; if (item.classList.length > 0) { break; } if (item.innerText != projectName) { projectList.push(item.innerText); } i++; } console.log(projectList); /* プロジェクト一覧を元にメニューにアイテム追加 */ let BaseUrl = location.href.match(/https?:\/\/[^/]+/)[0]; projectList.forEach((projectName) => { scrapbox.PageMenu(Label).addItem({ title: projectName, onClick: (e) => { let project = e.target.innerText; let lines = scrapbox.Page.lines.map((d) => d.text); let title = encodeURIComponent(lines.shift()); lines = encodeURIComponent(lines.join("\n")); window.open(BaseUrl + "/" + project + "/" + title + "?body=" + lines); } }); });