diff options
author | Daniel Weipert <git@mail.dweipert.de> | 2024-10-19 10:04:14 +0200 |
---|---|---|
committer | Daniel Weipert <git@mail.dweipert.de> | 2024-10-19 10:04:14 +0200 |
commit | ac93ed4d29dd85409fb4c0cd9c2af266e90777c1 (patch) | |
tree | 6a0b4487439bfe068d4b7d412be70d4f90faa2a5 /google-docs-bibliografie-und-abbildungsverzeichnis.js |
Diffstat (limited to 'google-docs-bibliografie-und-abbildungsverzeichnis.js')
-rw-r--r-- | google-docs-bibliografie-und-abbildungsverzeichnis.js | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/google-docs-bibliografie-und-abbildungsverzeichnis.js b/google-docs-bibliografie-und-abbildungsverzeichnis.js new file mode 100644 index 0000000..5070948 --- /dev/null +++ b/google-docs-bibliografie-und-abbildungsverzeichnis.js @@ -0,0 +1,103 @@ +function onOpen() { + DocumentApp.getUi().createMenu('Verzeichnis-Tools') + .addItem('Bibliografie bauen', 'buildBibliografie') + .addItem('Abbildungsverzeichnis bauen', 'buildAbbildungsverzeichnis') + .addToUi(); +} + +function buildBibliografie() { + var document = DocumentApp.getActiveDocument(); + var body = document.getBody(); + + var footnotes = document.getFootnotes(); + var footnotesArray = []; + for (var idx in footnotes) { + var footnote = footnotes[idx].getFootnoteContents(); + + footnotesArray.push(footnote.getText().replace(/^\s?(Vgl\. )?/, '')); + } + + footnotesArray.sort(); + + var resultText = ''; + for (var idx in footnotesArray) { + resultText += (footnotesArray[idx] + '\n\n'); + } + + getLastParagraph().appendText('\n\n---Bibliografie-beep-boop---\n\n' + resultText + '---Bibliografie-beep-boop---\n\n'); +} + +function buildAbbildungsverzeichnis() { + var document = DocumentApp.getActiveDocument(); + var body = document.getBody(); + + var images = getImages(); + var resultText = ''; + for (var idx in images) { + var image = images[idx]; + + resultText += (image.footNote.getText() + '\n\n'); + } + + getLastParagraph().appendText('\n\n---Abbildungsverzeichnis-beep-boop---\n\n' + resultText + '---Abbildungsverzeichnis-beep-boop---\n\n'); +} + +function getImages() { + var document = DocumentApp.getActiveDocument(); + var body = document.getBody(); + + var images = body.getImages(); + var result = []; + + for (var idx in images) { + var image = images[idx]; + var footNote = getFootNote(image); + var pageNumber = getPageNumber(image); + + result.push({ + image, + footNote, + pageNumber, + }); + } + + return result; +} + +function getFootNote(image) { + var paragraph = getImmediateElement(image, DocumentApp.ElementType.PARAGRAPH); + + return paragraph.editAsText(); +} + +function getPageNumber(element) { + return '00'; +} + +function getRangeElement(element) { + var document = DocumentApp.getActiveDocument(); + + var range = document.newRange(); + range.addElement(element); + range.build(); + var rangeElements = range.getRangeElements(); + + return rangeElements[0]; +} + +function getImmediateElement(element, elementType) { + var document = DocumentApp.getActiveDocument(); + var body = document.getBody(); + + var foundElement = body.findElement(elementType, getRangeElement(element)); + + return foundElement.getElement(); +} + +function getLastParagraph() { + var document = DocumentApp.getActiveDocument(); + var body = document.getBody(); + var paragraphs = body.getParagraphs(); + + return paragraphs[paragraphs.length - 1]; +} |