Opeapu, taulukkolaskentasovellus

Olen käyttänyt noin 30 vuotta oppilasarvioinnin apuna taulukkolaskentasovellusta nimeltä opeapu. Viimeisimmän muutoksen tein tammikuussa 18 kun opiskelin Google Apps scriptausta sen verran, että saan arvioinnin tuloksen lähtemään automaattisesti sähköpostitse oppilailleni.

taulukkolaskennasta_PDF__sivu_49___57_.png
Kuvankaappaus kottaraispönttötyylisestä MacIntoshista noin vuodelta 1991

Tietokoneeni uumenista löytyy 50 sivuinen pdf-tiedosto: Lavonen, Rahikka, Voipio. Taulukkolaskennasta fysiikan opetuksessa. Se on MAOL ry:n fysiikan toimikunnan raportti vuodelta 1992. Raporttia ei ole julkaistu kokonaisuudessaan missään, mutta osia siitä julkaistiin 90-luvun alkuvuosina Dimensiossa. Raportissa on Excelin käytön ohje, runsaasti erilaisia esimerkkejä fysiikan opetukseen liittyen: mittaustulosten käsittelyä, suorien ja käyrien sovittamista, yhtälöryhmien ratkaisua, simulointeja, matriisilaskentaa. Siellä on selitetty myös oppilasarvioinnin apuvälineen toiminta. Valitettavasti suurin osa esimerkkitiedostoista on kateissa.

Ajan myötä olen tehnyt opeapusta monta eri versiota eri taulukkolaskentaohjelmille. Aluksi käytin sitä Macissä toimivalla Ragtime-ohjelmalla. Aika pitkään arvioin oppilaita Appleworks-versiolla kunnes siirryin Excel-versioon. Viimeinen suurempi muutos oli, kun koulumme siirtyi Googlen käyttäjäksi, niinpä nykyisin käytän Google Sheets-versiota.

Opeapun idea on yksinkertainen. Laitan oppilaiden kokeesta ja muista tehtävistä saadut pisteet taulukkoon, määritän kunkin tuotoksen painokertoimet sekä  arvosanoja 4 ja 10 vastaavat pisteet. Ohjelma tuottaa kullekin oppilaalle arvosanan. Tässä viimeisessä versiossa ohjelma myös lähettää sähköpostia kullekin oppilaalle kertoen tietoa arvioinnista ja lopullisen arvosanan.

Opeapu_emaililla_jakoon_-_Google_Sheets
2018 versio sovelluksesta

 

Nykymuodossaan sovellus on oheisen kuvan näköinen. Kurssin arviointi menee käytännössä seuraavasti.

Kopioin Wilman arviointilomakkeelta oppilaiden nimet ja luokat. Sijoitan ne solusta C10 lähtien C ja D sarakkeille. Kokeesta saadut pisteet sijoitan F-sarakkeelle ja Classroomtehtävien pisteet J-sarakkeelle. Mahdolliset muut tuotokset laitan omille sarakkeilleen. Oppilaiden sähköpostiosoitteet saan kopioitua Google Classroomin arviointilomakkeesta. Kunkin tuotoksen pistemäärän painokertoimet laitan alueelle F8:L8. Lopulta päätän millä pistemäärällä kurssin läpäisee (solu D5) ja millä saa arvosanan 10 (solu E5). Sitten valitsen Sheetsin valikosta Työkalut → Ohjelman muokkaustyökalu → Suorita

Oppilaat saavat sähköpostiviestin:

Tässä kurssin arviointi, tarkista arviointini.
 Jos epäilet arvioinnin oikeellisuutta, niin lähetä sähköpostia tai tule juttelemaan kasvokkain.
 
 
 nimi: rahikka, luokka: 42A, kurssi: FY2,
 kurssin arvosana: 9,
 koepisteet: 50, Classroom: 321, muut pisteet: 50, pisteet yhteensä: 110.54545454545455, arvosana ennen pyöristystä 9.422222.
 
 Arvosanan 10 olisi saanut pistemäärällä 120
 arvosanan 4.5 olisi saanut pistemäärällä 30.
 Suurin Classroom pistemäärä oli 321
 
 Tämä on Mikon luoman robotin luoma sähköpostiviesti, pöö.
 
 -- 
 M m@hyl.fi
 born to lose, live to win.

Google Sheetsin koodi kirjoitetaan Työkalut → Ohjelman muokkaustyökalu Koodi-ikkunaan. Oheisessa koodissa (löytyy tarinan lopusta) on lisätty rivinumerot rivien alkuun. Viittaan niihin kun selvittelen miten koodi toimii.

  • rivi 1              Funktion määrittelyn alku.
  • rivi 2              Määritellään aktiivinen taulukko/lomake.
  • rivi 3              Määritellää rivi, josta oppilaiden tietoja aletaan lukea.
  • rivi 4              Haetaan solusta A59 oppilaiden lukumäärä, solussa A59 on kaava =COUNTA(A10:A57).
  • rivi 7              Määritellään luettava tietoalue, eli solusta A10 soluun joka on oppilaiden lukumäärä – 1 verran alempana ja 14 -1 saraketta oikealle A-sarakkeesta. Esimerkissä alue on A10:N11.
  • rivi 10            Haetaan muuttujaan data edellisellä rivillä määritellyn alueen tiedot.
  • rivi 12            Tämä silmukka luo sähköpostissa tarvittavan tekstin ja lähettää sen kullekin oppilaalle rivillä 36, muuttuja i viittaa siihen riviin mitä käsitellään.
  • rivi 13            Haetaan sähköpostiosoite rivin vasemmanpuolimmaisesta solusta, luku 0 viittaa tässä sarakkeeseen A.
  • rivi 16            Alkutekstiä muuttujaan alku, \n on rivinsiirto, sen tulee olla kiinni seuraavassa sanassa.
  • rivi 17 – 26     Muuttujaan message määritellään tekstiä, joka haetaan riviltä oikeista kohdista. + merkin avulla liitetään tekstiä.
  • rivi 20            Haetaan kurssin nimi solusta A2.
  • rivi 28-32      Luodaan lisää tekstejä sähköpostiviestiin.
  • rivi 34            Sähköpostiviestin aihe.
  • rivi 36            MailApp.sendEmail-funktiolla on kolme syötettä. Ensimmäinen on sähköpostiosoite, toinen aihe ja kolmas varsinainen viesti, +:n avulla liitetään eri tekstit yhteen.
  • rivi 37            Riviltä 12 alkavan for-silmukan lopetus
  • rivi 38            Koko ohjelman lopetus.

koodi

Koodi on muokattu sivun https://developers.google.com/apps-script/articles/sending_emails ohjeesta.

 1 function sendEmails() {

 2   var sheet = SpreadsheetApp.getActiveSheet();     // eka taulukko

 3   var startRow = 10;  // eka rivi luettavasta datasta

 4   var lkm = sheet.getRange("A59").getValue();     // haen oppilaiden lukumäärän, se on counta-funktiolla laskettu soluun A59

 5 

 6 

 7   var dataRange = sheet.getRange(startRow, 1, lkm, 14);    //luettava data-alue A10:L(10+lkm)

 8  

 9  

10   var data = dataRange.getValues();  //

11  

12   for (i in data) {     // tämä silmukka hakee  tarvittavan datan ja lähettää sen rivillä 34. se käy data-alueen läpi riveittäin.

13     var row = data[i];

14     var emailAddress = row[0];  // eka sarake

15    

16     var alku = "Tässä kurssin arviointi, tarkista arviointini. \nJos epäilet arvioinnin oikeellisuutta, niin lähetä sähköpostia tai tule juttelemaan kasvokkain. \n\n\n ";

17     var message =

18     "nimi: "+ row[2]+

19     ", luokka: "+ row[3]+

20     ", kurssi: " + sheet.getRange("A2").getValue() +

21     ", \nkurssin arvosana: " + row[4]+

22     ", \nkoepisteet: " + row[5]+

23     ", Classroom: " + row[9]+

24     ", muut pisteet: " +row[5]+

25     ", pisteet yhteensä: " + row[12]+

26     ", arvosana ennen pyöristystä " + row[13]+ ".";       // varsinainen viesti

27    

28     var loppu = "\n\nArvosanan "+ sheet.getRange("E6").getValue()+ " olisi saanut pistemäärällä "+ sheet.getRange("D6").getValue();  // lisää tekstiä viestiin

29     var loppu2 = "\narvosanan "+ sheet.getRange("E5").getValue()+ " olisi saanut pistemäärällä "+ sheet.getRange("D5").getValue();

30     var cl = ". \nSuurin Classroom pistemäärä oli "+ sheet.getRange("J7").getValue()  ;

31     var ropotti = "\n\nTämä on Mikon luoman robotin luoma sähköpostiviesti, pöö.";

32     var allekirjoitus = "\n\n-- \nM m@hyl.fi\nborn to lose, live to win.";

33    

34     var subject = "Mikon kurssin arviointi, tämä on testi";

35    

36     MailApp.sendEmail(emailAddress, subject, alku + message+ loppu+loppu2+cl+ropotti+allekirjoitus);

37   }

38 }

linkit

Google sheets-tiedosto oheisella koodilla

taulukkolaskennasta fysiikan opetuksessa pdf-tiedosto

Mainokset