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.

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 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.

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.
koodi
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 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