i have add-on copies content "template" docs files current open doc document.
when inline images used in body of source doc, text copied ui shows "reconnecting" message. greyed out image placeholder area being displayed loading. after closing document , re-opening google drive error displayed.
oddly enough if place image in source doc in header, appended correctly.
var targetbody = targetdoc.getbody(); for( var j = 0; j < totalelementsbody; ++j ) { var element = templatebody.getchild(j).copy(); var type = element.gettype(); if (type == documentapp.elementtype.paragraph) { targetbody.appendparagraph(element); } else if( type == documentapp.elementtype.table){ targetbody.appendtable(element); } else if( type == documentapp.elementtype.list_item){ targetbody.appendlistitem(element); } else if( type == documentapp.elementtype.inline_image) { var image = element.asinlineimage().getblob(); targetbody.appendimage(image); } else if( type == documentapp.elementtype.horizontal_rule) { targetbody.appendhorizontalrule(); } else if( type == documentapp.elementtype.page_break) { targetbody.appendpagebreak(); }
}
i have tried unable documentbodysection.appendimage(inlineimage) function properly? paragraph inline image has no children, if-statement never executed.
i noticed copying/appending not use font-family of source document elements... does, not.
i believe should take care of adding image inline properly:
if (type == documentapp.elementtype.paragraph) { if (element.asparagraph().getnumchildren() != 0 && element.asparagraph().getchild(0).gettype() == documentapp.elementtype.inline_image) { var blob = element.asparagraph().getchild(0).asinlineimage().getblob(); doc.appendimage(blob); } else doc.appendparagraph(element.asparagraph()); }
hence, when doesn't have children, else
statement should take care of it.
for copying/appending, can write onedit() function take care of formatting using setattributes method. below sample:
function onedit() { var doc = documentapp.getactivedocument(); var style = {}; style[documentapp.attribute.font_family] = 'calibri'; style[documentapp.attribute.font_size] = 18; doc.getbody().setattributes(style); }
hope helps.
Comments
Post a Comment