【问题标题】:Navigation Panel for Google DocsGoogle 文档的导航面板
【发布时间】:2014-06-22 16:30:05
【问题描述】:

我正在为 Google 文档编写脚本。 我想获取文档中所有标题的位置。然后我想在文档中创建一个包含这些标题的其他链接列表。我不想使用 TABLE_OF_CONTENTS。 我想在 Word 2010 中制作相似导航面板(link)。仅在 Google 文档中。 如何获取位置,或创建指向文档中所有标题的链接并将它们放在边栏中? 谢谢您的帮助!祝你有美好的一天。

【问题讨论】:

    标签: google-apps-script google-docs


    【解决方案1】:

    您不再需要求助于第 3 方插件,因为 Google 已接受此功能并于 2016 年 9 月 3 日发布。

    只需选中Tools > Document outline 选项,您就可以开始了。

    【讨论】:

      【解决方案2】:

      到目前为止,这个答案可能已经过时,但 Google Docs 中有一个插件可以让您这样做。只需单击“附加组件”并搜索“目录”或“文档导航器” - 您会发现附加组件会为您生成如您所描述的导航栏。可能还有其他插件在做同样的事情.....

      【讨论】:

        【解决方案3】:

        this example。这是一个带有脚本的 Google Doc,用于创建带有目录的侧边栏。

        下面是获取标题列表的代码。链接的文档在其脚本编辑器中包含所有内容。

        //Recursively get subsections
        function getHeadersFromParagraphs(paragraphs, limit, starter){
          var headers = [], header, hType, level, start, result,
              paragraph,
              heading,
              i,
              h1 = DocumentApp.ParagraphHeading.HEADING1,
              h2 = DocumentApp.ParagraphHeading.HEADING2,
              h3 = DocumentApp.ParagraphHeading.HEADING3,
              h4 = DocumentApp.ParagraphHeading.HEADING4,
              h5 = DocumentApp.ParagraphHeading.HEADING5,
              h6 = DocumentApp.ParagraphHeading.HEADING6,
              hTypes = [h1,h2,h3,h4,h5,h6];
        
          //Loop through all paragraphs
          start = starter ? starter.id+1 : 0;
          for(i = start; i < paragraphs.length; i += 1){
            paragraph = paragraphs[i];
            heading = paragraph.getHeading();
            level = hTypes.indexOf(heading);
        
            if(level > -1 && level < limit){
              if(paragraph.getText() == "") continue;
              if(starter && level <= starter.level) { i--; break; }
        
              header = { name : paragraph.getText(), id : i, level : level };
              result = getHeadersFromParagraphs(paragraphs, limit, header);
              i = result.index;
              header.subheaders = result.headers;
              headers.push(header);
            }
          }
          return { headers : headers, index : i }
        }
        
        //Initiate parsing of headers. By default, limit to Heading 1.
        function pullHeaders(level){
          level = level || 1;
          var body = DocumentApp.getActiveDocument().getBody(),
              paragraphs = body.getParagraphs();
          var result = getHeadersFromParagraphs(paragraphs, level);
          return JSON.stringify(result.headers);
        }
        

        【讨论】:

        • 如何使用它?我想我不能在文件中使用 JavaScript 代码 .gs prntscr.com/3gqzx8
        • 你能帮我用一下我的文件吗,我会很感激你的。你是个好人。
        • 我应该更清楚 - 上面的代码在文档中创建了一个标题列表。链接文档中有额外的代码来创建侧边栏。
        • 非常感谢您的帮助和回复。
        • 我怎样才能通过点击下拉列表在侧边栏中创建一个列表就足够了,并且 erarhii 标题?
        猜你喜欢
        • 2022-11-19
        • 1970-01-01
        • 2017-03-13
        • 2020-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多