¿Cómo puedo generar un documento de texto de varias páginas a partir de una plantilla de página única en google-apps-script?

Tengo que generar etiquetas a partir de una lista de datos de usuario almacenados en una hoja de cálculo. En este momento, todo funciona bien, excepto que cuando imprimo más de 16 elementos (el número de etiquetas por página) tengo más de un documento, cada uno de ellos es una sola página. Cada documento tiene un nombre único, por lo que no es muy difícil de usar, pero es un poco aburrido abrir tantos documentos para imprimirlos. Como no quiero crear una plantilla de 500 elementos (o el número que sea), me preguntaba si podría repetir esta plantilla de página única en un documento de varias páginas, por lo que tengo todas las etiquetas en un solo documento. Esto sería mucho más cómodo de imprimir ;-) No pude encontrar ninguna pista hasta ahora ... ¿alguna idea brillante? Aquí está el código que utilizo para generar los documentos (un poco largo, lo siento):

y ... muchas gracias por cualquier ayuda.

function print(e){
  var app = UiApp.getActiveApplication();
  var selrangerow = sh.getActiveSelection().getRowIndex();
  var selrangeheight = sh.getActiveSelection().getNumRows();
  var selrangeend = selrangerow+selrangeheight-1
  var selrange = sh.getRange(selrangerow,1,selrangeheight,7).getValues();
  var feuilles = Math.ceil(selrangeheight/16);
  for (ff=1;ff<=feuilles*16;++ff){
  if(ff>selrange.length){selrange.push([" "," "," "," "," "," "," "])} ;// remplit selrange jusqu'à multiple de 16 (nbre de feuille)
  }
//Logger.log(selrange)
//Logger.log(e.parameter.mode) ;// gauche=true, centre = false
  if(e.parameter.mode=='false'){
  var doctemplate = DocsList.getFileById(labeltemplatedoc);// false >> centre
  }else{
  var doctemplate = DocsList.getFileById(labeltemplatedocleft);// true >> gauche
  }
//Logger.log("File name: " + doctemplate.getName()); 
  var FUS1=new Date().toString().substr(25,8);// FUS1 gets the GMT+0200 or GMT+0100 string
  if (FUS1!="GMT+0200"){FUS1="GMT+0100"};// and takes care of summer time !
    for(page=0;page<feuilles;++page){
      var today=Utilities.formatDate(new Date(),FUS1,"dd-MM-yyyy")+"__"+Utilities.formatDate(new Date(),FUS1,"HH:mm")
      if (Number(page+1)<10){var docnb="0"+Number(page+1)}else{var docnb=Number(page+1)}
      var docname="IMPRESSION_page_"+docnb+"_"+today;
      var docId=DocsList.copy(doctemplate,docname).getId();
//Logger.log(selrange)  
      var doc = DocumentApp.openById(docId);;
      var lib=["titre","nom","prénom","rue","code","ville","pays"]
        for(nn=1;nn<=16;++nn){
          for(ll=0;ll<lib.length;++ll){
            var olditem = ("#"+lib[ll]+nn+"#");
            var newitem = selrange[nn-1+page*16][ll];
             if (newitem!=""){newitem=newitem+" "}
//Logger.log(olditem + "   *"+newitem+"*")
              doc.replaceText(olditem,newitem);
         }
       }
      Utilities.sleep(300); // pause entre les feuilles
    } 
   app.getElementById("end").setText(feuilles+" feuille(s) se trouve(nt) dans vos documents Google prête(s) à être imprimée(s).");
    var doclist=DocsList.getRootFolder().getFilesByType("document",0,2000);
    var names = new Array();
      for (nn=0;nn<doclist.length;++nn){
        if(doclist[nn].getName().match("IMPRESSION_page_")=="IMPRESSION_page_"){
      names.push([doclist[nn].getName(),doclist[nn].getId()]);
      }
      }
    names.sort();
 for(nn=0;nn<names.length;++nn){
 app.getElementById("Dlb").addItem(names[nn][0])
 }
   app.getElementById("clock").setVisible(false);
   app.getElementById("Dlb").setVisible(true);
   return app
}
//

Respuestas a la pregunta(2)

Su respuesta a la pregunta