[Chromium(Google Chrome/Edge他) 拡張機能開発] - リストに従って履歴を削除する拡張機能
概要
毎日閲覧履歴を整理するマメな人がいるとするならば・・・いないか・・・
特定のURL は確実に見返さないというものがある・・・無いか・・・
そこで、特定のURLはとりあえず削除する拡張機能を作成する
ここまでのステップから飛躍しているように思えるが、
拡張機能の開発の基礎はJavaScriptのため、先の2手さえわかれば後は応用である
記述
manifest.json
{
"manifest_version": 3,
"name": "Remove histories",
"version": "1.0",
"description": "特定のURLを持つ履歴を削除する",
"permissions":["history"],
"action": {
"default_popup": "popup.html"
}
}
拡張機能の定義
permissions をお忘れなく
popup.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Hello World</title>
</head>
<body style="width:150px;">
<button id="delete">特定履歴を一括削除</button>
<script src="popup.js"></script>
</body>
</html>
ベタ書きすると、拡張機能のボタンを押した瞬間に動作してしまうので、 一応動作させた感を出すために、拡張機能内にボタンを配置、それを押したら動作するようにする
また、そのままだとボタンが縦長になるので、拡張機能のモーダル自体の横幅を指定するために body に width:150px を指定
popup.js
const targetArray =
[
'"https://localhost"',
'"https://www.youtube.com"',
'"https://x.com/'
];
document.getElementById("delete").addEventListener("click", () => {
targetArray.forEach(targets => {
chrome.history.search(
{ text: targets, startTime: 0 },
r => {
r.forEach(entry => {
chrome.history.deleteUrl({ url: entry.url });
})
}
)
})
});
基本的な考え方はJavaScriptそのままである
検索クエリについては、ダブルコーテーションで囲わないと、特定URLを情報に含む別サイトもターゲットとなるため、
必ずダブルコーテーションで囲う
startTime に 0 を渡すことで全ての期間という指定になる
特定の期間を指定したい場合、開始日時は
ミリ秒で指定することになることに留意
deleteUrl はURL単位で削除される
もし特定日時の特定のURLとしたい場合は、deleteRange
という別APIを使うことになる
つまり、searchで見つけた結果から、lastVisitTimeをstartTime、 その +1
ミリ秒を endTime に当てて削除する
ちなみにsearchでは履歴の id が取得できるものの、これを用いて delete する API は 2025/6/6 時点で存在しない様子
実行結果
targetArray に記述された URL を含む履歴が一括で削除される
手元で動作させている感じでは正常に動作しているように思えるが、一応自己責任で