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);
}
}