Skript na kopírování Google tabulek

Pravidelně během přípravného týdne kopíruji pro nové studenty 30 tabulek pro osmileté a 90 tabulek pro čtyřleté se „známkovníčky“ pro jejich vlastní přehled prospěchu.

Mám připravené dvě tabulky, jednu pro osmileté, druhou čtyřleté studium (odkaz na kopírovanou tabulku).

A v tabulce, ke které mám připojený skript, viz níže, mám také seznam studentů s jejich google e-mailovými adresami se sloupcem, kam se mi doplní odkaz na jejich kopii tabulky.

Skript nastavuje sdílení tabulky se studentem a skupinou učitelů, doplňuje do určené buňky (v mém případě S1 na prvním listu) jméno a tuto buňku uzamyká (používala jsem zpětně v jiném skriptu, ale snad zafunguje i zde nebo alespoň pro inspiraci).

function kopirujSesity8() {
  
 /*** vzorová tabulka pro ctyrleti ***/
 /*** kopirovanaTabulka = SpreadsheetApp.openByUrl('https://docs.google.com/a/.../spreadsheets/d/id_tabulky/edit'); // 4leti***/
   
 /*** vzorová tabulka pro osmileti ***/
 var kopirovanaTabulka = SpreadsheetApp.openByUrl('https://docs.google.com/a/.../spreadsheets/d/id_tabulky/edit'); // 8 leti
 
 var seznam = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/id_tabulky/edit'); // odkaz na seznam studentů, struktura viz obr.  

 //nacitani ze seznamu studentu, nastavit rozsah seznamu
 var sheet = seznam.getSheets()[0];
 
  // VYMYSLET, JAK HLIDAT ROZSAH RADKU!!!
  /* je treba upresnit rozsah */
  var rangeU = sheet.getRange("E2:E32"); //uzivatel
  var rangeJ = sheet.getRange("G2:G32"); //jmeno
  var ucet = rangeU.getValues();
  var jmeno = rangeJ.getValues();
  
  // pole studentu a jmen
  var studenti = ucet;
  var jmena = jmeno;

  // * vytvori slozku
  
      
  // cyklus pro kopirovani tabulek pro jednotlive studenty
 
  for (var i = 0; i < studenti.length; i++) {
    
   // vytvori kopii, nasdili s kantory a studentem, zapise jmeno studenta do bunky S1 na prvnim listu
   var kopie = kopirovanaTabulka.copy(studenti[i] + " - " + jmena[i]).addEditors([studenti[i]+"@gjk.cz","kantori@gjk.cz"]);
   
   
     /*** ctyrleti ***/
     //kopie.getSheetByName("1. ročník").getRange(1,19).setValue(jmena[i]);
   
     /*** osmileti ***/
     kopie.getSheetByName("prima").getRange(1,19).setValue(jmena[i]);

 //--- NEOVĚŘENO v TOMTO SKRIPTU, používala jsem vedle - uzamčení 'prima'.S1 aneb jméno studenta na 1. listu
       var protection = tabulka.getSheetByName("prima").getRange(1, 19).protect().setDescription('Jméno studenta');
       //--- odstranění ostatních, ponechání aktuálního uživatele
       var me = Session.getEffectiveUser();
        protection.addEditor(me);
        protection.removeEditors(protection.getEditors());
        if (protection.canDomainEdit()) {
        protection.setDomainEdit(false);          
        }
  //---

   // ulozi odkaz na vytvorenou kopii k prislusnemu studentovi do seznamu studentu
    var odkaz = kopie.getUrl();
    var radek = i + 2;
    var UlozOdkaz = sheet.getRange(radek,4).setValue(odkaz);
    
    
    }
    
}