sheets scripts script manager google getas functions developer apps google-apps-script google-docs google-drive-sdk

google-apps-script - scripts - javascript google apps script



Google Docs/Drive: numerar los encabezados (5)

¿Es posible numerar los títulos en un documento de Google Docs / Drive?




Si quiere algo más fácil, ahora hay un complemento de Google llamado "Tabla de contenido" que le permitirá numerar sus títulos.

Para instalar este complemento:

  1. Haga clic en Add-Ons> Get Add-Ons.
  2. Haga clic en el icono "Tabla de contenido" o busque este complemento para instalarlo

Entonces su Tabla de Contenidos debería aparecer en su barra lateral. Haga clic en el menú Formato de números de título y elija 1.2.3

Debe volver a formatear el documento si tiene uno antiguo para "actualizar" los números, pero en realidad el complemento funciona muy bien.

He visto la respuesta en este foro .


Todo lo que tienes que hacer es copiar / pegar encabezados anteriores.

Si copia y pega cualquier elemento de la lista numerada, conserva su numeración y cambia automáticamente el número en casos relevantes.


Actualización: ahora disponible en github .

Actualización 2: ahora manejando encabezados vacíos y líneas en blanco gracias a 2 solicitudes de extracción en github.

Modifiqué el script mencionado por Mikko Ohtamaa y creé un script de Google Apps que agrega un menú de documento de herramientas de títulos que te permite:

  • número automático Título
  • números claros de Encabezados

Cómo enumerar automáticamente los títulos de los documentos de Google:

  1. Abra su documento> Herramientas> Editor de scripts ...
  2. Comience un proyecto en blanco
  3. Pega el siguiente código y guárdalo con tu nombre preferido
  4. Seleccione Ejecutar> onOpen y autorice el script por primera vez
  5. Seleccione Ejecutar> en Abrir
  6. Cambie a su Documento y pruebe las funciones en el menú personalizado de Herramientas de Encabezados creado.

~~ Descargo de responsabilidad: puede tener problemas con encabezados vacíos. Pero siempre puede corregirlos y ejecutar la acción de nuevo. ~~

Código para copiar y pegar:

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]+/, '''')); } } }