google apps script - How to delete blank pages in a multipage document? -


edit : added answer because edit have been long (see answer2)

following former post document merging ended working script (thanks henrique ;) still have 1 small issue : final 'merged' document contains blank pages (depending of other docs content) remove. cannot find easy way this. script goes :

function mergedocs(docids) {  // parameter docids 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 copy of firstelement , give new basedocname build serie(to keep margins etc...)   var basedoc = documentapp.openbyid(basedocid)   var body = basedoc.getactivesection(); //   for( var = 0; < 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 doc type couldn't appear in body: "+type);     }      body.appendpagebreak(); // if content length short avoids breaking page layout   } } 

the 'pagebreak' causes (sometimes) blank page , know that(!), necessary keep perfect page layout (i'm printing labels doc). here a link typical example

well serge, don't think there's on api tell page element belongs. so, solving tricky :)

right of bat, think of "inside" approach. mean, know page giving trouble. if same (e.g. have fixed number of labels), loop counting page breaks , remove bad one.

but if that's no possible, guess, @ least know layout. test see how many labels fit page , count labels, when happens, skip appending page-break. looks better solution.

then again, depending on layout, might not possible or difficult. so, last thing can think of check document dom see if specific pattern happens when page-break alone on page. since that's kind of weird, guess google docs automatically inserts empty paragraph on page, it's not "childless", or it, maybe property, don't know. know require amount of effort, doing investigation understand how document dom works. if don't it, i'll have in future work document templates lot. when i'll update answer, if haven't done before me :)


Comments

Popular posts from this blog

django - How can I change user group without delete record -

java - Need to add SOAP security token -

java - EclipseLink JPA Object is not a known entity type -