РЕДАКТИРАНЕ: добавен отговор, защото редактирането би било твърде дълго (вижте отговор 2)
След предишна публикация за обединяване на документи В крайна сметка получих работещ скрипт (Благодаря, Henrique ;), но все още имам един малък проблем: крайният „обединен“ документ съдържа понякога празни страници (в зависимост от съдържанието на други документи), които бих искал да премахна. Не мога да намеря лесен начин да направя това. Скриптът върви така:
function mergeDocs(docIDs) { // parameter docIDs is an array of Doc IDs
var baseDocname = DocumentApp.openById(docIDs[0]).getName();// typical name = IMPRESSION_page_07_07-06-2012__20:57
var modelDoc = DocsList.getFileById(docIDs[0]);
var newmodelName=baseDocname.substr(0,11)+'multipage'+baseDocname.substring(18);
var baseDocId = DocsList.copy(modelDoc,newmodelName).getId();// make a copy of firstelement and give it new basedocname build from the serie(to keep margins etc...)
var baseDoc = DocumentApp.openById(baseDocId)
var body = baseDoc.getActiveSection();
//
for( var i = 0; i < docIDs.length; ++i ) {
var otherCopy = DocumentApp.openById(docIDs[i]).getActiveSection();
var totalElements = otherCopy.getNumChildren();
for( var j = 0; j < totalElements; ++j ) {
var element = otherCopy.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);
else
throw new Error("According to the doc this type couldn't appear in the body: "+type);
}
body.appendPageBreak(); // if content length is too short avoids breaking page layout
}
}
„PageBreak“ причинява (понякога) празна страница, знам това (!), но е необходимо да се поддържа перфектно оформление на страницата (аз отпечатвам етикети с този документ). ето връзка към типичен пример