Cosenseのデイリーページから前日と翌日にリンクするUserScript
Cosenseのページのタイトル(そのページのURL)の末尾が2025-05-31のような形(yyyy-mm-ddという日付の形式)になっているときに、「その日の前日」と「翌日」にリンクする矢印アイコンを、ページの右上の「ページメニュー」に表示します。
日付の形式は変更可能です(後述)。
スマートフォンのような、ブラウザの横幅が狭い環境では、アイコンが画面内で見えないかもしれません(見えなければ使えません)。その場合は、別の記事で紹介しているブックマークレット版をおすすめします(→Cosenseのデイリーページから前日と翌日に移動するブックマークレット)。
サンプル
https://gyazo.com/ef5e74cd41a4e97441f932990ea1a656
ページ名がyyyy-mm-ddになっているページ(例えば2025-05-31)を開くと、右上のページメニューに矢印のアイコンが表示されます。
左向きの矢印←が、前日へのリンク。右向き→が翌日へのリンクです。
前者をクリックすると2025-05-30に移動します。後者は2025-06-01に移動します。
ページのタイトル(URL)の末尾がyyyy-mm-ddでないときは、クリックしても反応しません。
コード
コードはChatGPTに作らせたものです。
/help-jp/UserScriptの説明に従って導入し、ブラウザを1回リロードして下さい。
前日の日付にリンクする矢印アイコン
code:script.js
scrapbox.PageMenu.addMenu({
title: '前日',
image: 'https://gyazo.com/6721e6c2fcc204b789f541e3a6766c77/raw', //左矢印アイコン(変更可能)
onClick: () => {
const project, title = location.pathname.split('/'); // プロジェクト名とページ名を取得
if (/^\d{4}-\d{2}-\d{2}$/.test(title)) { // ページ名が日付形式か確認
const d = new Date(title); // 日付オブジェクトに変換
d.setDate(d.getDate() - 1); // 前日に設定
const next = d.toISOString().slice(0, 10); // yyyy-mm-dd 形式に整形
const a = document.createElement('a'); // <a> 要素を作成
Object.assign(a, {
href: /${project}/${next}, // 遷移先のパスを指定
className: 'page-link', // Scrapbox 内部リンク用クラス
rel: 'route', // 内部ルーティングとして扱う
type: 'link' // リンクタイプ指定
});
a.dataset.pageTitle = next; // 遷移先のページタイトルをセット
document.body.append(a); // <body> に追加
a.click(); // 擬似的にクリックして遷移
a.remove(); // 使用後に要素を削除
}
}
});
翌日の日付にリンクする矢印アイコン
code:script.js
scrapbox.PageMenu.addMenu({
title: '翌日',
image: 'https://gyazo.com/676bb7623d84b046348fc194d4f6e366/raw', //右矢印アイコン(変更可能)
onClick: () => {
const project, title = location.pathname.split('/'); // プロジェクト名とページ名を取得
if (/^\d{4}-\d{2}-\d{2}$/.test(title)) { // ページ名が日付形式か確認
const d = new Date(title); // 日付オブジェクトに変換
d.setDate(d.getDate() + 1); // 翌日に設定
const next = d.toISOString().slice(0, 10); // yyyy-mm-dd 形式に整形
const a = document.createElement('a'); // <a> 要素を作成
Object.assign(a, {
href: /${project}/${next}, // 遷移先のパスを指定
className: 'page-link', // Scrapbox 内部リンク用クラス
rel: 'route', // 内部ルーティングとして扱う
type: 'link' // リンクタイプ指定
});
a.dataset.pageTitle = next; // 遷移先のページタイトルをセット
document.body.append(a); // <body> に追加
a.click(); // 擬似的にクリックして遷移
a.remove(); // 使用後に要素を削除
}
}
});
コードのカスタマイズ
日付の形式の変更
上掲のコードはyyyy-mm-ddにしか対応していませんが、それ以外の様々な形式(20250531, 2025/05/31, 2025年5月31日など)に対応させることが可能だと思います。コードのonClick: () => {以降の部分を改変して下さい。
移動する日数の変更
コード内のd.setDate(d.getDate() - 1);やd.setDate(d.getDate() + 1);の末尾の1が「1日分の移動」を意味します。この数値を、例えば7に変えると、「7日前=前週の同じ曜日」や「7日後=翌週の同じ曜日」に移動できるようになります。
更新履歴
2025-06-01:倉下さんのバージョンを参考に、ページ遷移を速くするようコードを改変
2025-05-31:公開(当初のコード)
/icons/hr.icon
#JavaScript #UserScript