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?
Los números de encabezado de complemento de Google Docs https://chrome.google.com/webstore/detail/heading-numbers/pomhgonejhponfnckfnonolnciipappm parecen hacer el trabajo confiable y con muchas opciones. Prefiero esto sobre cualquier script hecho a medida.
- utiliza el menú de Google Docs "Complementos"
- buscar "Números de encabezado"
Puede utilizar el servicio de documento en Apps Script para acceder a los títulos en un documento de Google Drive: https://developers.google.com/apps-script/service_document
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:
- Haga clic en Add-Ons> Get Add-Ons.
- 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:
- Abra su documento> Herramientas> Editor de scripts ...
- Comience un proyecto en blanco
- Pega el siguiente código y guárdalo con tu nombre preferido
- Seleccione Ejecutar> onOpen y autorice el script por primera vez
- Seleccione Ejecutar> en Abrir
- 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]+/, ''''));
}
}
}