SHARE
TWEET

Shitty EO greie v3.0 (actually sensible documentation)

a guest Jun 20th, 2019 71 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function myFunction() {
  2.   /* All koden under denne linja brukes for å generere flere filer, "Fraværslapper" */
  3.  
  4.  
  5.   var sheetID = '1ursf9JVFklqQ9tDEek4uk-tZaoRLFCJSr5ShLP32kzQ'; // IDen til regnearket med navn og skole til folk som var med på arrangementet
  6.   var documentID = '1e5jPbr-75XNK0GwtsuR06JBqE3MgduD07teaFRiCZyM'; // IDen til dokumentet som er et mal til fraværslappen
  7.  
  8.   var ss = SpreadsheetApp.openById(sheetID);
  9.   var sheet = ss.getSheets()[0];
  10.  
  11.   var sheet_data = sheet.getDataRange().getValues();
  12.   var name_range;
  13.   var school_range;
  14.  
  15.   for(var i = 0; i < sheet_data[0].length; i++){ // sheet_data er en 2D array (row, column), så når vi tar sheet_data[0].length, får vi antall kolonner
  16.     if(sheet_data[0][i].toString().toLowerCase() == "navn"){
  17.       name_range = sheet.getRange(2, i + 1, sheet.getLastRow()); // Skriver i + 1, fordi arrays begynner med 0, mens nummerering av kolonner og rader begynner med 1
  18.     } else if(sheet_data[0][i].toString().toLowerCase() == "skole"){
  19.       school_range = sheet.getRange(2, i + 1, sheet.getLastRow());
  20.     }
  21.   }
  22.  
  23.   var row_number = 1; // En variabel som brukes for å tracke hvilken rad programmet har nådd.
  24.   var names_list; // En array som er en liste over alle navn på elever som går på en skole
  25.   var cell; // Den nåværende cellen
  26.   var school; // Den nåværende skolen
  27.  
  28.   while(row_number <= sheet.getLastRow()){ // Hver iterasjon av loopen lager et nytt dokument. Dette gjøres opp inntil programmet når en tom rad
  29.  
  30.     names_list = [];
  31.     cell = school_range.getCell(row_number, 1);
  32.     school = cell.getValue();
  33.    
  34.     do{ // Koden i denne blokken kjøres minst en gang for å behandle tilfeller hvor bare en elev fra en skole var med på arrangementet
  35.       names_list.push(name_range.getCell(row_number, 1).getValue());
  36.       row_number++;
  37.     } while(school_range.getCell(row_number, 1).getValue().toLowerCase() == school.toLowerCase());
  38.    
  39.    
  40.     // Kopierer malen og lager nytt dokument
  41.     var document = DriveApp.getFileById(documentID);
  42.     var new_document_name = "Fraværslapp " + school;
  43.     var new_document = document.makeCopy(new_document_name);
  44.     var new_document_ID = new_document.getId();
  45.     var new_document_body = DocumentApp.openById(new_document_ID).getBody();
  46.    
  47.     switch(names_list.length){ // Mye enklere enn masse "if...else", i tilfeller hvor vi sjekker om en variabel er lik et eller annet
  48.        
  49.       case 1:{
  50.         new_document_body.replaceText("#NAVN", names_list[0]);
  51.         break; // Må ha en break pga. naturen til en "switch statement" som ellers ville kjørt alle "case"-ene uten at de er sanne uttrykk.
  52.       }
  53.        
  54.       case 2:{
  55.         new_document_body.replaceText("#NAVN", names_list.join(" og "));
  56.         break;
  57.       }
  58.        
  59.       default:{ // Kjøres hvis mer enn 2 elever fra en skole var med på arrangementet
  60.         var temp = names_list[names_list.length - 1]; // Temporær variabel som lagrer det siste navnet i lista
  61.         names_list.pop(); // Sletter det siste navnet fra selve lista for at vi ikke får gjentakelser i dokumentet
  62.         new_document_body.replaceText("#NAVN", names_list.join(", ") + " og " + temp);
  63.         break;
  64.       }
  65.        
  66.     }
  67.    
  68.   }
  69.  
  70. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top