開いているページをエクスポートするUserScript
script.jsscrapbox.PageMenu().addItem({
title: 'export data',
onClick: async () => {
const projectName = `${scrapbox.Project.name}`;
const pageName = `${encodeURIComponent(scrapbox.Page.title)}`;
const target = `/api/pages/${projectName}/${pageName}`;
const response = await fetch(target); // 重いページで重くなる可能性がある
const json = await response.json();
const exportData = {pages: [{
title: json.title,
created: json.created,
updated: json.updated,
lines: json.lines,
},],};
const blob = new Blob([JSON.stringify(exportData,null,' ')], {type: 'octet/stream'}); // download dataを作成
const url = window.URL.createObjectURL(blob); // download linkを生成
// 同一scrapbox pageに隠しa要素を作り、それを踏んでdownloadを実行する
const a = document.createElement('a');
a.href = url;
a.download = `${projectName}-${pageName}.json`;
a.style.display = 'none';
document.body.appendChild(a);
a.click(); // downloadを実行
// 後始末
window.URL.revokeObjectURL(url);
a.parentNode.removeChild(a);
},
});