Google文档/云端硬盘 - 标题编号

时间:2012-09-12 13:16:06

标签: google-apps-script google-docs google-drive-api

是否可以在Google文档/云端硬盘文档中对标题进行编号?

7 个答案:

答案 0 :(得分:73)

如果您想要更简单的方法,可以使用名为"Table of Contents"的Google插件,以便为您的标题编号。

安装此附加组件:

  1. 点击附加组件>获取附加组件。
  2. 点击“目录”图标或搜索此插件以进行安装
  3. 然后您的目录应显示在侧边栏中。单击Heading Numbers Format菜单,然后选择1.2.3

    如果你有一个旧的文件,你必须重新格式化你的文件,以“刷新”数字,但实际上插件工作得很好。

    我见过the answer in this forum

答案 1 :(得分:37)

更新:现已在github中提供。

更新2:现在处理空标题和空行,这要归功于github上的2个拉取请求。


我修改了script mentioned by Mikko Ohtamaa并创建了一个Google Apps脚本,其中添加了标题工具文档菜单,可让您:

  • 自动编号标题
  • 清除标题数字

如何自动为Google文档标题编号:

  1. 打开您的文档>工具>脚本编辑器......
  2. 启动空白项目
  3. 粘贴下面的代码并使用您的名字保存
  4. 选择运行> onOpen并首次授权脚本
  5. 选择运行>的OnOpen
  6. 更改为您的文档,并尝试创建标题工具自定义菜单上的功能。
  7. ~~ 免责声明:您可能会遇到空标题问题..但您可以随时修复它们并再次执行操作。~~

    要复制和粘贴的代码:

    function onOpen() {
      DocumentApp.getUi().createMenu('Headings Tools')
      .addItem('Auto Number Headings', 'numberHeadingsAdd')
      .addItem('Clear Heading Numbers', 'numberHeadingsClear')
      .addToUi();
    }
    
    function numberHeadingsAdd(){
      numberHeadings(true);
    }
    
    function numberHeadingsClear(){
      numberHeadings(false);
    }
    
    function numberHeadings(add){
      var document = DocumentApp.getActiveDocument();
      var body = document.getBody();
      var paragraphs = document.getParagraphs();
      var numbers = [0,0,0,0,0,0,0];
      for (var i in paragraphs) {
        var element = paragraphs[i];
        var text = element.getText()+'';
        var type = element.getHeading()+'';
    
        // exclude everything but headings
        if (!type.match(/Heading \d/)) {
          continue;
        }
    
        // exclude empty headings (e.g. page breaks generate these)
        if( text.match(/^\s*$/)){
          continue;
        }
    
        if (add == true) {
          var level = new RegExp(/Heading (\d)/).exec(type)[1];  
          var numbering = '';
    
          numbers[level]++;
          for (var currentLevel = 1; currentLevel <= 6; currentLevel++) {
            if (currentLevel <= level) {
              numbering += numbers[currentLevel] + '.';
            } else {
              numbers[currentLevel] = 0;
            }
          }
          Logger.log(text);
          var newText = numbering + ' ' + text.replace(/^[0-9\.\s]+/, '');
          element.setText(newText);
          Logger.log([newText]);
        } else {
          Logger.log(text);
          element.setText(text.replace(/^[0-9\.\s]+/, ''));
        }
      }
    
    }
    

答案 2 :(得分:7)

自撰写以来(2020年4月),许多建议的应用程序已过时或不再运行。

我发现可以使用的编号标题方法如下:

  1. 转到获取加载项
  2. 搜索并安装降价工具

Markdown工具可以选择使用编号的标题。内置的Google目录可以像魅力一样工作。

要创建目录:

  1. 转到菜单项插入并选择目录

答案 3 :(得分:2)

Google文档附加标题数https://chrome.google.com/webstore/detail/heading-numbers/pomhgonejhponfnckfnonolnciipappm似乎可靠,并且有很多选项。我比任何自定义脚本更喜欢这个。

  • 使用Google文档菜单“Add-Ons”
  • 搜索“标题号码”

答案 4 :(得分:1)

您所要做的就是复制/粘贴以前的标题。

如果复制并粘贴编号列表中的任何项目,则会保留其编号,并在相关情况下自动更改编号。

答案 5 :(得分:0)

我写了一个用于降价标题的版本,但它也支持普通的标题数字。来源位于https://github.com/jordan2175/gdoc-markdown-tools,可通过G Suite市场将其作为“降价工具”使用。

答案 6 :(得分:0)

前面提到的附加组件“目录”今天不可用。 我安装了一个名为“ Markdown Tools”的 安装后,您必须应用本机标题样式,然后转到附加组件>降价工具>标题编号,然后选择所需的编号样式,该样式将应用于文档中的所有标题。