I had a similar question and was disappointed that no one had provided you with an answer. I finally found an answer that works for me and perhaps will help others.
function copyDoc() {
var sourceDoc = DocumentApp.getActiveDocument().getBody();
var targetDoc = DocumentApp.openById(' ID ');
var totalElements = sourceDoc.getNumChildren();
for( var j = 0; j < totalElements; ++j ) {
var body = targetDoc.getBody()
var element = sourceDoc.getChild(j).copy();
var type = element.getType();
if( type == DocumentApp.ElementType.PARAGRAPH ){
body.appendParagraph(element);
}
else if( type == DocumentApp.ElementType.TABLE){
body.appendTable(element);
}
else if( type == DocumentApp.ElementType.LIST_ITEM){
body.appendListItem(element);
}
// ...add other conditions (headers, footers...
}
targetDoc.saveAndClose();
}
// This function copied ALL of the source Document and posted it at the bottom of the other target Document text;
// including the correct formatting. The targetDoc need not be Active when the Script is run.
// The code written by Serge insas as an answer in Stack Overflow Nov 14, 2013.