日報ページ作成script
以下のフォーマットを右側の+ボタンクリックから作成できる
code:ふぉーまっと
YYYY/M/D
曜日
導入は以下の手順
0. userscriptを有効化する
1. settingsに以下を追加(他のstyle.cssとの干渉がある場合は末尾に追加)
code:style.css
button#Templates.tool-btn:hover { text-decoration: none }
button#Templates.tool-btn::before { position: absolute; content: '\f067'; font: 900 21px/46px 'Font Awesome 5 Free' }
button#Templates.tool-btn img { opacity: 0 }
2. 自分のページに以下を追加
テンプレートメニューの定義リンクは自分のプロジェクトに合わせる
code:script.js
// UserScriptとしてユーザーページに追加する
addTemplateItemsToPageMenu()
function addTemplateItemsToPageMenu() {
// テンプレートメニューの定義ここから ----------
const __templates = [
{ title: '📄 日報テンプレート', url: '/api/code/mouii/日報ページ作成script/日報テンプレート.js' },
{ title: '📅 月次日記テンプレート', url: '/api/code/mouii/月次ページ作成script/月次テンプレート.js' }
]
// テンプレートメニューの定義ここまで ----------
const __templateMenuTitle = 'Templates'
scrapbox.PageMenu.addMenu({ title: __templateMenuTitle, image: '/assets/img/logo.png', onClick: () => { } })
__templates.forEach((template) => {
scrapbox.PageMenu(__templateMenuTitle).addItem({
title: template.title,
onClick: () => { __loadTemplate(template.url) }})
})
const __loadTemplate = templateUrl => {
const textarea = document.getElementById('text-input')
// カーソルを最後に移動
textarea.focus()
textarea.setSelectionRange(textarea.value.length, textarea.value.length)
// テンプレートを読み込む
$.get(templateUrl, function (response, status, xhr) {
if (status == "success") {
try {
// JavaScriptを実行してテンプレートを生成
const templateContent = eval(response);
// 既存の内容とテンプレートを結合
const existingContent = textarea.value
const newContent = existingContent
? existingContent + "\n\n" + templateContent
: templateContent
textarea.value = newContent
// テキストエリアのinputイベント
textarea.dispatchEvent(new InputEvent('input', {bubbles: true, cancelable: true}))
// カーソルを最後に移動
textarea.setSelectionRange(newContent.length, newContent.length)
console.log("テンプレートが追加されました")
} catch (ex) {
console.log("テンプレートの追加に失敗しました: " + ex)
}
} else {
console.log("テンプレートの読み込みに失敗しました: " + status)
}
})
}
}
3. テンプレをどっかにかおく
code:日報ページ作成script.js
(() => {
const today = new Date();
const yesterday = new Date(today);
yesterday.setDate(today.getDate() - 1);
const tomorrow = new Date(today);
tomorrow.setDate(today.getDate() + 1);
const formatDate = (date) => ${date.getFullYear()}/${date.getMonth() + 1}/${date.getDate()};
const formatMonth = (date) => ${date.getFullYear()}/${date.getMonth() + 1};
const dateString = formatDate(today);
const yesterdayString = formatDate(yesterday);
const tomorrowString = formatDate(tomorrow);
const monthString = formatMonth(today);
const dayOfWeek = getDayOfWeek(today);
return `${dateString}
${dayOfWeek}曜日
})();
code:old
(() => {
const today = new Date();
const yesterday = new Date(today);
yesterday.setDate(today.getDate() - 1);
const tomorrow = new Date(today);
tomorrow.setDate(today.getDate() + 1);
const formatDate = (date) => ${date.getFullYear()}/${date.getMonth() + 1}/${date.getDate()};
const dateString = formatDate(today);
const yesterdayString = formatDate(yesterday);
const tomorrowString = formatDate(tomorrow);
const dayOfWeek = getDayOfWeek(today);
return `${dateString}
${dayOfWeek}曜日
`;
})();
code:日報ページ作成script.old
(() => {
const today = new Date();
const yesterday = new Date(today);
yesterday.setDate(today.getDate() - 1);
const tomorrow = new Date(today);
tomorrow.setDate(today.getDate() + 1);
const formatDate = (date) => ${date.getFullYear()}/${date.getMonth() + 1}/${date.getDate()};
const dateString = formatDate(today);
const yesterdayString = formatDate(yesterday);
const tomorrowString = formatDate(tomorrow);
return `${dateString}
`;
})();
public.icon