Как создать многостраничный текстовый документ из одностраничного шаблона в 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
}
//
7
задан Serge insas 21 May 2012 в 21:10
поделиться