Skip to content

Instantly share code, notes, and snippets.

@rensjaspers
Created June 14, 2017 11:34
Show Gist options
  • Save rensjaspers/f51b23f3ca5d73d247119673a4276a87 to your computer and use it in GitHub Desktop.
Save rensjaspers/f51b23f3ca5d73d247119673a4276a87 to your computer and use it in GitHub Desktop.
Insert dd-mm-yyyy date in Google Doc
function onInstall(e) {
onOpen(e);
}
function onOpen() {
DocumentApp.getUi().createMenu('Utilities')
.addItem('Insert today\'s date', 'insertDate')
.addToUi();
}
function insertDate() {
var cursor = DocumentApp.getActiveDocument().getCursor();
var selection = DocumentApp.getActiveDocument().getSelection();
var date = Utilities.formatDate(new Date(), "GMT", "dd-MM-yyyy");
if (cursor) {
var element = cursor.insertText(date);
} else if (selection) {
replaceSelection(date);
} else {
DocumentApp.getUi().alert('Error: could not insert date');
}
}
// https://stackoverflow.com/a/21613263
function replaceSelection(newText) {
var selection = DocumentApp.getActiveDocument().getSelection();
if (selection) {
var elements = selection.getRangeElements();
var replace = true;
for (var i = 0; i < elements.length; i++) {
if (elements[i].isPartial()) {
var element = elements[i].getElement().asText();
var startIndex = elements[i].getStartOffset();
var endIndex = elements[i].getEndOffsetInclusive();
var text = element.getText().substring(startIndex, endIndex + 1);
element.deleteText(startIndex, endIndex);
if( replace ) {
element.insertText(startIndex, newText);
replace = false;
}
} else {
var element = elements[i].getElement();
if( replace && element.editAsText ) {
element.clear().asText().setText(newText);
replace = false;
} else {
if( replace && i === elements.length -1 ) {
var parent = element.getParent();
parent[parent.insertText ? 'insertText' : 'insertParagraph'](parent.getChildIndex(element), newText);
replace = false; //not really necessary since it's the last one
}
element.removeFromParent();
}
}
}
} else
throw "Hey, select something so I can replace!";
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment