ページ転送UserScriptを活用して、ScrapboxのPrivate Projectで管理しているページをPublic Projectに複製する
みんなの脳内は見たいので積極的にやってくれ
やり方
2つプロジェクトを用意します
Private Project(Aとします): 自分しか見られない、普段使い用
Public Project(Bとします): 誰でも見られる、公開用
ページ作成や編集はすべてAでやる
A内の自分のusernameのページに以下のUserScriptを貼っておく(25行目の値は各自Bの名前に変更すること) code: ページ転送するやつ.js
export function exportPage(projectName) {
// scrapbox以外のページとapiのページはexport対象から外す
if(document.domain != 'scrapbox.io') return;
if(!scrapbox || scrapbox.Layout !== 'page') return;
const currentProjectName = scrapbox.Project.name;
const currentPageName = encodeURIComponent(scrapbox.Page.title);
let date_ob = new Date();
let date = ("0" + date_ob.getDate()).slice(-2);
let month = ("0" + (date_ob.getMonth() + 1)).slice(-2);
let year = ("" + date_ob.getFullYear());
// タイトル以外の行を取得する
const body = encodeURIComponent(scrapbox.Page.lines.slice(1).map(l => l.text).join('\n'));
const newLine = "%0A"
const url = https://scrapbox.io/${projectName}/${currentPageName}?body=${body}${newLine}${newLine}exported at: ${year}/${month}/${date}${newLine}original page: [/${projectName}/${currentPageName}];
console.log(url)
window.open(url);
}
scrapbox.PageMenu.addMenu({
title: 'export',
});
const projectList = "satoooh" // ここをPublic Projectの名前に変更 projectList.forEach( (project) => {
scrapbox.PageMenu('export').addItem({
title: export this page to /${project},
onClick: () => exportPage(project),
});
});
リロードすると右に白いexportアイコンができる(出ない場合はここまでの設定でミスってる)
https://gyazo.com/59f455c6149476ca5ef41d21eb68c0d5
これを複製したいA内のページでクリックするとBに複製されるようになってる
2022/08/23