You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Google Docs API返回内容解析为基于标题的树结构?

Google Docs标题树状结构转换方案

Google Docs官方API没有提供直接将扁平段落列表转换为标题树状结构的内置接口,你需要自行解析API返回的内容来构建树结构。

实现思路

  • 从API返回的document.body.content中筛选出带有标题样式的段落(通过段落的paragraph.paragraphStyle.namedStyleType判断,比如HEADING_1、HEADING_2等)
  • 维护一个层级栈来跟踪当前标题的父节点:
    1. 遍历每个标题时,先弹出栈中级别大于等于当前标题级别的节点,找到对应的父级
    2. 将当前标题作为子节点添加到父节点的children数组中(如果是顶级标题则直接加入根列表)
    3. 将当前标题推入栈中,作为后续子标题的父级候选

伪代码示例

// 初始化树结构和层级栈
const titleTree = [];
const levelStack = [];

// 遍历API返回的所有内容块
document.body.content.forEach(block => {
  // 筛选标题段落
  if (block.paragraph && block.paragraph.paragraphStyle.namedStyleType.startsWith('HEADING_')) {
    const level = parseInt(block.paragraph.paragraphStyle.namedStyleType.split('_')[1]);
    const titleText = block.paragraph.elements.map(el => el.textRun.content).join('').trim();
    
    // 调整栈,找到当前标题的父节点
    while (levelStack.length > 0 && levelStack[levelStack.length - 1].level >= level) {
      levelStack.pop();
    }

    const titleNode = { text: titleText, level: level, children: [] };
    if (levelStack.length === 0) {
      titleTree.push(titleNode);
    } else {
      levelStack[levelStack.length - 1].children.push(titleNode);
    }
    levelStack.push(titleNode);
  }
});

这种方法可以精准还原Google Docs侧边栏的标题树结构,满足内容目录生成、结构化提取等场景需求。

内容的提问来源于stack exchange,提问作者gust

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 00:12:05