😺

Chrome拡張でタブを自動削除(Teamsのローンチページを消したい)

2023/01/04に公開約2,300字

(追記:1ヶ月ほど自分で使ってみて特に問題なさそうです)

やりたいこと - 開いた時点で用済みなタブを自動で消したい

  • Teams会議を開いたときに、Chromeでローンチ用のタブが開くのですが、これを自動で消したいです。
  • AWS-VPNを接続するときに、空のChromeタブが開くのですが、これを自動で消したいです。

Chrome拡張

あまり経験がなかったのですが、こちらのブログを参考にしました。

https://tech.smartshopping.co.jp/chrome-extension

使い方

インストール

  • コードから直接インストールします
  • 以下のコードをファイルにコピペ(ファイル名は固定)して、close-tabというフォルダに入れます(フォルダ名は任意)。
close-tab/
├── background.js
└── manifest.json
  • chrome://extensions/ にアクセス
  • 右上のデベロッパーモードをONにする
  • 「パッケージ化されていない拡張機能を読み込む」からclose-tabフォルダを指定

とすると読み込まれます。

削除

拡張機能のアイコンを右クリック→削除/Remove from Chrome

設定

  • manifest.jsonは変更なし
  • background.js
    • keyword_blacklist_urlにマッチさせる文字列を書く。キーワードのいずれかに"部分マッチ"すればよいので、全体を書く必要はなし。
    • 複数のときは例えば、const keyword_blacklist_url = ['teams.microsoft.com/dl/launcher/launcher.html', 'some-url'];
    • delay(5000)は5000ミリ秒後にマッチするタブを消すという意味なので調整する

やっていること

  • Chromeのタブが開いたときに、URLを見て、keyword_blacklist_urlに入れておいたキーワードにマッチすれば、待機してからタブを閉じます
manifest.json
{
	"name": "Close tabs",
	"description": "Close tabs with specific keywords after opening 5 seconds.",
	"version": "1.0",
	"manifest_version": 3,
	"background": {
		"service_worker": "background.js"
	},
	"permissions": [
		"tabs"
	]
}
background.js
// Patterns in urls to match
const keyword_blacklist_url = ['teams.microsoft.com/dl/launcher/launcher.html'];

function delay(time) {
	return new Promise(resolve => setTimeout(resolve, time));
}

function find_keywords(url) {
	isFound = false;

	keyword_blacklist_url.forEach(function (key) {
		if (url.includes(key)) { isFound = true; }
	});
	// console.log("isFound", isFound);
	return isFound;
}

chrome.tabs.onUpdated.addListener((tabId) => {
	chrome.tabs.query({ active: true, lastFocusedWindow: true }, tabs => {
		let url = tabs[0].url;
		// console.log(url);
		if (find_keywords(url) == true) {
			// console.log("Closing... wait");
			delay(5000).then(() => chrome.tabs.remove(tabId, function () { }));
		}
	});
});

何が起きているかを見たい場合は、console.logのコメントアウトを外して、拡張のビューを検証(Inspect view)を開くとログが見れます。

まとめ

  • Chrome Extensionで特定のタブを自動で消せるようにしました

TODO

最低限の機能しかないので追加するかもしれないこと

  • 設定を拡張側から確認、変更できるようにする
  • 消す前にポップアップで通知する
  • 機能の一時的なOFF
  • 消したタブのログ記録(最新5とか)

Discussion

ログインするとコメントできます