Initial Commit, basic tranclusion working

This commit is contained in:
Adam Goldsmith 2020-03-17 15:38:37 -04:00
commit 1dcb7f16fe
7 changed files with 99 additions and 0 deletions

1
.clasp.json Normal file
View File

@ -0,0 +1 @@
{"scriptId":"1KlR8cKW5jd9Fu-soBwK1dljmLi0XcHMIoYeUbnLXFZKMme-EaMqubaIk"}

1
.claspignore Normal file
View File

@ -0,0 +1 @@
.#*

9
.editorconfig Normal file
View File

@ -0,0 +1,9 @@
# EditorConfig is awesome: https://EditorConfig.org
[*]
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
charset = utf-8
indent_style = space
indent_size = 2

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
/node_modules/
/package-lock.json

3
.prettierrc Normal file
View File

@ -0,0 +1,3 @@
trailingComma: es5
singleQuote: true
jsxBracketSameLine: true

76
Code.ts Normal file
View File

@ -0,0 +1,76 @@
function onOpen() {
const ui = SpreadsheetApp.getUi();
ui.createMenu('test')
.addItem('test1', 'test')
.addToUi();
}
function copyElement(
source_element: GoogleAppsScript.Document.Element,
dest: GoogleAppsScript.Document.Body,
index?: number
) {
const element = source_element.copy();
// based on https://stackoverflow.com/questions/6783819/google-app-script-copy-document-page
if (element.getType() == DocumentApp.ElementType.PARAGRAPH)
if (index) dest.insertParagraph(index, element.asParagraph());
else dest.appendParagraph(element.asParagraph());
else if (element.getType() == DocumentApp.ElementType.TABLE)
if (index) dest.insertTable(index, element.asTable());
else dest.appendTable(element.asTable());
else if (element.getType() == DocumentApp.ElementType.LIST_ITEM)
if (index) dest.insertListItem(index, element.asListItem());
else dest.appendListItem(element.asListItem());
else if (element.getType() == DocumentApp.ElementType.INLINE_IMAGE)
if (index) dest.insertImage(index, element.asInlineImage());
else dest.appendImage(element.asInlineImage());
else
throw new Error(
"According to the doc this type couldn't appear in the body: " +
element.getType()
);
}
function copyBody(
source: GoogleAppsScript.Document.Body,
dest: GoogleAppsScript.Document.Body,
index?: number
) {
var totalElements = source.getNumChildren();
for (var j = 0; j < totalElements; ++j) {
if (index) copyElement(source.getChild(j), dest, index + j);
else copyElement(source.getChild(j), dest);
}
}
function test() {
const cell = SpreadsheetApp.getActive().getCurrentCell();
const template = DocumentApp.openById(
'1V0uMuM80BGpjpdt1AmuzlU97tDI_u-y2rOfdl4tkqmc'
);
const source_doc = DocumentApp.openById(
'1tB9--ilbfDixuQAEMk0_D6KqNFToQzs-au6NiotCH5M'
);
const out_doc = template; // TODO: make a copy of template, and write to that
const insert_point = out_doc
.getBody()
.findText('{{test}}')
?.getElement();
if (insert_point) {
// find the parent element that is a direct descendant of the body
let parent = insert_point;
while (
parent.getParent().getType() != DocumentApp.ElementType.BODY_SECTION
) {
parent = parent.getParent();
}
const idx = out_doc.getBody().getChildIndex(parent);
// insert with index 0 is an append, for some reason
copyBody(source_doc.getBody(), out_doc.getBody(), idx + 1);
out_doc.getBody().removeChild(parent);
}
}

7
appsscript.json Normal file
View File

@ -0,0 +1,7 @@
{
"timeZone": "America/New_York",
"dependencies": {
},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8"
}