UserScript:ページ情報
ページ情報の取得。
code: scriptxx.js
scrapbox.PageMenu.addItem({
//title: 'Page Info',
title: () => {
if (scrapbox.Layout === "page") {
const u=scrapbox.Page.lines
.map(line => line.updated)
.reduce((a,b) => Math.max(a, b))
const updated = new Date(u * 1000)
const now = new Date()
const diff = Math.ceil((now - updated)/86400000)
const face = (diff < 365) ? '😃' : '😥'
//動かない
//const headline = 最終更新日時:${updated.toLocaleString()} ${diff}日前 ${face}
//document.documentElement.style.setProperty('--headline', headline)
return 更新:${updated.toLocaleString()}${face}
} else {
return 'Page Info'
}
},
onClick: () => {
// 文字数
const chars = scrapbox.Page.lines
.map(line => line.text.length)
.reduce((a,b) => a + b)
// 作成年月日
const c = scrapbox.Page.lines
.map(line => line.created)
.reduce((a,b) => Math.min(a, b))
const created = new Date(c * 1000).toLocaleString()
//console.log(created)
// 更新年月日
const u=scrapbox.Page.lines
.map(line => line.updated)
.reduce((a,b) => Math.max(a, b))
const updated = new Date(u * 1000).toLocaleString()
window.alert(
"ページ情報\n"
+ "プロジェクト名 : " + scrapbox.Project.name + "\n"
+ "ページ名 : " + scrapbox.Page.title + "\n"
+ "ページ行数 : " + scrapbox.Page.lines.length + "\n"
+ "ページ文字数 : " + chars + "\n"
+ "作成年月日 : " + created + "\n"
+ "更新年月日 : " + updated + "\n"
)
}
})
もっといい方法があるもよう
こっちはもっと多くの情報が取れる
ページタイトルに'/'が含まれるページは読み込めないもよう
code:script.js
scrapbox.PageMenu.addItem({
//title: 'Page Info',
title: () => {
if (scrapbox.Layout === "page") {
const u=scrapbox.Page.lines
.map(line => line.updated)
.reduce((a,b) => Math.max(a, b))
const updated = new Date(u * 1000)
const now = new Date()
const diff = Math.ceil((now - updated)/86400000)
const face = (diff < 365) ? '😃' : '😥'
return ${face}:${updated.toLocaleString()}
} else {
return 'Page Info'
}
},
onClick: () => {
const url = '/api/pages/'
+ encodeURI(scrapbox.Project.name) + '/'
+ encodeURI(scrapbox.Page.title.replace('/', '%252F'))
//console.log(url)
fetch(url)
.then(response => response.json())
.then(json => {
console.log(json)
// 文字数
const chars = scrapbox.Page.lines
.map(line => line.text.length)
.reduce((a,b) => a + b)
//作成年月日
const created = new Date(json.created * 1000).toLocaleString()
//console.log(created)
//更新年月日
const updated = new Date(json.updated * 1000).toLocaleString()
window.alert(
"ページ情報\n"
+ "プロジェクト名 : " + scrapbox.Project.name + "\n"
+ "ページ名 : " + scrapbox.Page.title + "\n"
+ "ページ行数 : " + json.lines.length + "\n"
+ "ページ文字数 : " + chars + "\n"
+ "作成年月日 : " + created + "\n"
+ "更新年月日 : " + updated + "\n"
+ "作成者 : " + json.user.name + "\n"
+ "Views : " + json.views + "\n"
)
}).catch(err => {
console.error('fetch failed', err)
})
}
})
UserScript.icon
https://img.shields.io/badge/JavaScript-UserScript_ページ情報-F7DF1E.svg?logo=javascript&style=for-the-badge