谷歌浏览器如何导出带有层级结构的标签页组

作者:袖梨 2026-07-04

Chrome原生不支持导出标签页分组,需通过开发者工具执行脚本提取当前窗口分组结构(含名称、颜色、折叠状态及tabIds),再配合查询tabs获取URL映射,二者JSON文件必须成对保存;跨窗口导出需手动切换或加载自定义扩展程序一键完成。

您正在使用谷歌浏览器打开多个标签页并已分组管理,现在需要将这些分组(含名称、颜色、嵌套关系)完整导出为可存档或迁移的结构化数据,但Chrome原生界面不提供该功能——必须绕过UI限制,通过开发者工具执行脚本提取当前窗口所有标签页组的原始结构信息。

提取当前窗口标签页组结构(含名称、颜色、成员URL)

这一步直接读取Chrome内部Tab Group API暴露的数据,能捕获每个分组的标题、色值、折叠状态及所含标签页URL,但【仅限当前活动窗口】,其他窗口的分组不会被包含。

1、确保目标窗口处于激活状态,按 F12 打开开发者工具 → 切换到 Console 标签页。

2、粘贴并回车执行以下代码:

const groups = await chrome.tabGroups.query({}); const result = groups.map(g => ({id: g.id, title: g.title, color: g.color, collapsed: g.collapsed, tabIds: g.tabIds})); console.log(JSON.stringify(result, null, 2));

3、控制台将输出一个JSON数组,每项对应一个分组,包含title(名称)、color(颜色代码如“blue”)、tabIds(标签页ID列表)等字段。复制整段JSON内容。

4、新建文本文件,粘贴JSON内容,保存为 【tabgroups_export_日期.json】,后缀必须为 .json。

还原分组时需注意的关键前提

导出的JSON本身不含URL地址,只含tabIds——这些ID在浏览器重启后即失效。因此必须同步获取URL信息。

1、在上一步执行完后,立即在同一Console中运行:

const tabs = await chrome.tabs.query({windowId: window.id}); const urlMap = {}; tabs.forEach(t => { if (t.id) urlMap[t.id] = t.url; }); console.log(JSON.stringify(urlMap, null, 2));

2、复制该输出,另存为 【tab_urls_日期.json】。两个文件必须成对保存,缺一不可。

3、若跳过此步,后续无法还原分组内具体网页,只能重建空分组。

批量导出全部窗口的分组结构(含跨窗口)

当您有多个Chrome窗口且每个窗口都建有分组时,需遍历所有窗口逐一提取。此操作不可逆,若中途关闭某窗口,其分组数据将丢失。

方法一:手动切换+重复执行

① 激活第一个窗口 → 执行第一步脚本 → 保存JSON → 切换到第二个窗口 → 再执行 → 依此类推。

方法二:一键导出全部(需启用chrome.tabGroups权限)

1、访问 chrome://extensions → 开启右上角“开发者模式” → 点击“加载已解压的扩展程序”。

2、准备一个含 manifest.json 和 background.js 的简易扩展包(内容见下方),选择该文件夹加载。

3、扩展加载成功后,在任意页面按 Ctrl+Shift+P → 输入“Export All Tab Groups” → 回车运行。

4、导出文件自动保存至下载目录,命名为 all_windows_tabgroups_时间戳.json。

manifest.json 内容(复制保存为同名文件):{"manifest_version":3,"name":"Tab Group Exporter","permissions":["tabGroups","tabs"],"background":{"service_worker":"background.js"}}

background.js 内容(复制保存为同名文件):chrome.commands.onCommand.addListener(async (command) => { if (command === "export-all") { const windows = await chrome.windows.getAll({populate: true}); const result = []; for (const win of windows) { const groups = await chrome.tabGroups.query({windowId: win.id}); groups.forEach(g => result.push({...g, windowId: win.id})); } const blob = new Blob([JSON.stringify(result, null, 2)], {type: "application/json"}); chrome.downloads.download({url: URL.createObjectURL(blob), filename: `all_windows_tabgroups_${Date.now()}.json`}); }}); chrome.commands.create({name: "export-all", description: "Export all tab groups from all windows"});

相关文章

精彩推荐