Как я могу создать многостраничный текстовый документ из одного шаблона страницы в google-apps-script?

Я должен создать ярлыки из списка пользовательских данных, хранящихся в электронной таблице. Прямо сейчас у меня все работает хорошо, за исключением того, что, когда я вывожу более 16 элементов (количество меток на страницу), у меня есть более одного документа, каждый из которых представляет собой одну страницу. Каждый документ имеет уникальное имя, поэтому его не очень сложно использовать, но скучно открывать так много документов, чтобы их напечатать. Поскольку я не хочу создавать шаблон из 500 элементов (или любого другого числа), мне было интересно, смогу ли я повторить этот одностраничный шаблон в многостраничном документе в любой степени, чтобы я получил все метки в одном документе. Это было бы гораздо удобнее печатать ;-) Я до сих пор не смог найти никакой подсказки ... какая-нибудь блестящая идея? Вот код, который я использую для создания документов (немного долго, извините за это):

и ... большое спасибо за любую помощь.

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
}
//

Ответы на вопрос(2)

Ваш ответ на вопрос