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

问题描述 投票:62回答:4

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

google-apps-script google-docs google-drive-sdk
4个回答
80
投票

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

要安装此附加组件:

  1. 单击Add-Ons> Get Add-Ons。
  2. 单击“目录”图标或搜索此插件以进行安装

然后您的目录应出现在侧边栏中。单击Heading Numbers Format菜单,然后选择1.2.3

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

我见过the answer in this forum


38
投票

更新:现在可在github获得。

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


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

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

如何自动编号Google Documents Headings:

  1. 打开文档>工具>脚本编辑器...
  2. 开始一个空白项目
  3. 粘贴下面的代码并使用您的首选名称保存
  4. 选择Run> onOpen并首次授权脚本
  5. 选择Run> onOpen
  6. 切换到您的文档并尝试创建标题工具自定义菜单上的功能。

~~免责声明:你可能有空标题的问题..但你可以随时修复它们并再次运行。~~

要复制和粘贴的代码:

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
投票

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

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

1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.