Google apps script 谷歌文档/驱动器-标题编号

Google apps script 谷歌文档/驱动器-标题编号,google-apps-script,google-docs,google-drive-api,Google Apps Script,Google Docs,Google Drive Api,是否可以对Google Docs/Drive文档中的标题进行编号?更新:现已在中提供 更新2:由于github上的两个拉取请求,现在处理空标题和空行 更新3:github和下面的代码已修复,用于处理新文档标题标识 我修改了并创建了一个Google Apps脚本,它添加了一个标题工具文档菜单,允许您: 自动编号标题 明确标题和编号 如何自动为谷歌文档标题编号: 打开文档>工具>脚本编辑器 启动一个空白项目 粘贴下面的代码,并使用首选名称保存 选择Run>onOpen并首次授权脚本 选择Run

是否可以对Google Docs/Drive文档中的标题进行编号?

更新:现已在中提供

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

更新3:github和下面的代码已修复,用于处理新文档标题标识


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

  • 自动编号标题
  • 明确标题和编号
如何自动为谷歌文档标题编号:

  • 打开文档>工具>脚本编辑器
  • 启动一个空白项目
  • 粘贴下面的代码,并使用首选名称保存
  • 选择Run>onOpen并首次授权脚本
  • 选择Run>onOpen
  • 更改到您的文档并尝试创建的标题工具自定义菜单上的功能
  • ~~免责声明:您可能会遇到空标题的问题。。但您始终可以修复它们并再次运行操作~~

    要复制和粘贴的代码:

    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]+/, ''));
        }
      }
    
    }
    
    函数onOpen(){ DocumentApp.getUi().createMenu('标题工具') .addItem('自动编号标题','编号添加') .addItem('清除标题编号','编号ADINGSCLEAR') .addToUi(); } 函数numberhadingsadd(){ 数字编码(真); } 函数numberhadingsclear(){ 数字编码(假); } 函数编号代码(添加){ var document=DocumentApp.getActiveDocument(); var body=document.getBody(); var段落=document.getparations(); 变量数=[0,0,0,0,0,0,0]; 对于(第i部分中的风险值){ var元素=第[i]段; var text=element.getText()+“”; var type=element.getHeading()+“”; //除标题外不包括任何内容 如果(!type.match(/HEADING\d/)){ 继续; } //排除空标题(例如,分页符生成这些标题) if(text.match(/^\s*$/){ 继续; } if(add==true){ var level=newregexp(/HEADING(\d)/).exec(type)[1]; 变量编号=“”; 数字[级别]+;
    对于(var currentLevel=1;currentLevel,如果您想要更简单的东西,有一个名为的Google插件,它允许您对标题进行编号

    要安装此加载项,请执行以下操作:

  • 单击加载项>获取加载项
  • 单击“目录”图标或搜索此加载项以安装它
  • 然后你的目录应该出现在你的侧边栏中。点击标题数字格式菜单,选择1.2.3

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


    我看到了。

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


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

    我编写了一个用于标记标题的版本,但它也支持普通标题编号。源代码位于此处,可通过G Suite Marketplace作为“标记工具”获得.

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

    自撰写(2020年4月)以来,许多建议的应用已过时或不再工作

    我发现编号标题的方法如下:

  • 去获取附加组件
  • 搜索并安装降价工具
  • Markdown工具有一个使用数字标题的选项。它与谷歌内置的目录一起工作,就像一个符咒

    要创建目录,请执行以下操作:

  • 转到“插入”菜单项并选择“目录”

  • 我很高兴知道@IvanCachicatari我正计划制作一个改进版本,作为一个附加组件发布,这样我们就不需要每次都打开脚本编辑器了…@IvanCachicatari好主意,你有了!@MrGravity实现这一点的方法是将脚本转换成一个我计划这样做的脚本,但我现在没时间了..哇!我感觉它已经90岁了-再次联系。我们真的需要一个脚本来完成像标题编号这样的基本任务吗?现在我明白了为什么会有这么多编程计划——我们的孩子真的需要知道他们的JavaScript来编写任何工作文档;P@Luciano这有点有效。我看到一件奇怪的事情发生了。如果我从git剪切并粘贴代码,我会得到一个两个结果中的一个是:什么都没有发生,或者第38行出现了正则表达式解析错误。为了让它工作,我必须1)从10/16/17剪切并粘贴git代码,2)保存,3)手动更改nsof建议,4)保存并按上面列出的方式运行。我注意到了一个细微的区别:在您的版本中,第38行删除了\d周围的括号。它如何在本机上仍然不受支持?如果没有显示侧栏,请转到“加载项->目录->侧栏中显示”.我想任何人都可以称他们的附加组件为“目录”。因此,指向实际加载项的链接是有帮助的。我猜你的意思是:该插件是如何安装的-每台机器/浏览器、每个文档、每个用户在google docs上?如果其他人想要编辑该文档,会发生什么情况?遗憾的是,该插件似乎已损坏。由于授权问题,它无法安装。其他人也会得到同样的结果吗?@gavdotnet它对我有效,所以他们一定已经修复了它。多么实用,这个解决方案被低估了。事实上,这是最简单的本地解决方案(如果你还在编辑阶段)!据我所知,这要求您对每个标题级别进行缩进。是这样还是有其他方法?问题是:您需要从同一文档中复制标题。如果您复制“标题1”,例如f