Skip to content

Instantly share code, notes, and snippets.

@tadeaspetak
Last active November 1, 2016 15:12
Show Gist options
  • Save tadeaspetak/c84f4faeb8ad2f96de3e88b015679392 to your computer and use it in GitHub Desktop.
Save tadeaspetak/c84f4faeb8ad2f96de3e88b015679392 to your computer and use it in GitHub Desktop.
Google Documents - Add/Remove Heading Numbers, based on https://github.com/lpanebr/autoNumberHeadings
function addMenu() {
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.trim() === ''){
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]+/, ''));
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment