Created
June 14, 2017 11:34
-
-
Save rensjaspers/f51b23f3ca5d73d247119673a4276a87 to your computer and use it in GitHub Desktop.
Insert dd-mm-yyyy date in Google Doc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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