Mis on Apps Script?
Google Apps Script — tööriist Google Sheets’i automatiseerimiseks JavaScripti abil. Avatakse läbi Laiendused → Apps Script.

Ülesanne 1 + 2 — Tabeli loomine ja kujundamine
Funktsioon looTabelJaKM() — “Loo tabel + KM”
Puhastab ainult read A1:E6 (kirjeldus allpool jääb alles), loob päise ja 3 toodet, arvutab automaatselt hinna käibemaksuga (× 1.2).
// 1 Funktsioon andmete lisamiseks ja käibemaksu arvutamiseks
// 2 Tabeli kujundamine
function looTabelJaKM() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// getActiveSpreadsheet() — võtab aktiivse faili
// getActiveSheet() — võtab aktiivse lehe
sheet.getRange("A1:E6").clearContent(); // puhastab väärtused
sheet.getRange("A1:E6").clearFormat(); // puhastab kujunduse
// Päis: Nimetus, Hind, Hind käibemaksuga
sheet.getRange("A1:C1").setValues([["Nimetus", "Hind", "Hind käibemaksuga"]]);
// 3 toodet (ilma leib)
var data = [
["piim", 1.2],
["kommid", 2.5],
["Coca-Cola", 1.0]
];
// Arvutame käibemaksu (×1.2) ja lisame massiivi
for (var i = 0; i < data.length; i++) {
var km = data[i][1] * 1.2; // km = käibemaks
data[i].push(km);
}
// Kirjutame andmed tabelisse (ainult veerud A:C)
sheet.getRange(2, 1, data.length, 3).setValues(data);
// 2 Kujundus: paks päis + raam
sheet.getRange("A1:C1").setFontWeight("bold");
sheet.getRange("A1:C" + (data.length + 1))
.setBorder(true, true, true, true, true, true);
}

Põhimeetodid:
| Meetod | Mida teeb |
|---|---|
clearContent() | Kustutab lahtrite väärtused |
clearFormat() | Kustutab kujunduse |
setFontWeight("bold") | Paks kiri |
setBorder(...) | Raam ümber tabeli |
setValues() | Kirjutab andmed lahtritesse |
Ülesanne 3 — Andmete lisamine InputBox’i kaudu
Funktsioon lisaAndmed() — “Lisa andmed”
Küsib kasutajalt toote nime ja hinda. Kontrollib sisestust. Lisab ainult ridadesse 2–7 (maksimaalselt 3 uut toodet).
// 3 Andmete sisestamise funktsioon
function lisaAndmed() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// Otsime viimast täidetud rida AINULT vahemikus 2–7
// (et mitte haarata allpool olevat kirjeldust)
var viimaneRida = 1;
for (var i = 2; i <= 7; i++) {
if (sheet.getRange(i, 1).getValue() !== "") {
viimaneRida = i;
}
}
// Kontrollime kas on ruumi (max 3 lisamist)
if (viimaneRida >= 7) {
Browser.msgBox("Tabel on täis! Maksimaalselt 3 lisamist.");
return;
}
// Küsime kasutajalt andmeid
var nimetus = Browser.inputBox("Sisesta toote nimi:");
if (nimetus == "cancel") return; // kui vajutas Tühista
var hind = parseFloat(Browser.inputBox("Sisesta hind:"));
// Kontroll: kas sisestati number
if (isNaN(hind)) {
Browser.msgBox("Vigane hind!");
return;
}
var km = hind * 1.2; // arvutame käibemaksu
var rida = viimaneRida + 1; // järgmine vaba rida
// Lisame uue rea
sheet.getRange(rida, 1, 1, 3).setValues([[nimetus, hind, km]]);
// Laiendame raami uuele reale
sheet.getRange("A1:C" + rida)
.setBorder(true, true, true, true, true, true);
}



Põhimeetodid:
| Meetod | Mida teeb |
|---|---|
Browser.inputBox() | Dialoogiaken teksti sisestamiseks |
Browser.msgBox() | Dialoogiaken sõnumiga |
parseFloat() | Muudab teksti kümnendarvuks |
isNaN() | Kontrollib kas sisestati number |
Ülesanne 4 — Laiendatud tabel (Kogus + Kokku)
Funktsioon lisaKogusJaKokku() — “Lisa kogus + kokku”
Lisab veerud Kogus (D) ja Kokku (E). Loob ripploendi 1–10. Rakendab ainult andmete ridadele (2–7), kirjeldust ei puuduta.
// 4 Laiendatud tabel - lisame Kogus ja Kokku veerud
function lisaKogusJaKokku() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// Lisame uued veerupäised
sheet.getRange("D1").setValue("Kogus");
sheet.getRange("E1").setValue("Kokku");
// Loome ripploendi reegli (1–10)
var rule = SpreadsheetApp.newDataValidation()
.requireValueInList(["1","2","3","4","5","6","7","8","9","10"])
.setAllowInvalid(false) // keelab loendist väljas olevad väärtused
.build();
// Otsime viimast andmerea (ainult 2–7)
var viimaneRida = 1;
for (var i = 2; i <= 7; i++) {
if (sheet.getRange(i, 1).getValue() !== "") {
viimaneRida = i;
}
}
// Rakendame ripploendi AINULT andmete ridadele
sheet.getRange("D2:D" + viimaneRida).setDataValidation(rule);
// Arvutame Kokku igale reale
for (var i = 2; i <= viimaneRida; i++) {
var hind = sheet.getRange(i, 2).getValue(); // hind
var kogus = sheet.getRange(i, 4).getValue(); // kogus
// Kui tühi → vaikimisi 1
if (kogus === "" || kogus == 0) {
kogus = 1;
sheet.getRange(i, 4).setValue(kogus);
}
sheet.getRange(i, 5).setValue(hind * kogus); // kokku
}
// Kujundus
sheet.getRange("A1:E1").setFontWeight("bold");
sheet.getRange("A1:E" + viimaneRida)
.setBorder(true, true, true, true, true, true);
}


Põhimeetodid:
| Meetod | Mida teeb |
|---|---|
newDataValidation() | Loob valideerimisreegli |
requireValueInList() | Ripploend väärtustega |
setAllowInvalid(false) | Lubab ainult loendis olevad väärtused |
setDataValidation() | Rakendab reegli vahemikule |
Ülesanne 5 — Nupud ja menüü
Funktsioon onOpen() — automaatne trigger
Käivitub automaatselt faili avamisel. Loob kasutajamenüü Google Sheets’i ülemisse ribasse.
// 5 Nupud ja menüü
function onOpen() {
var ui = SpreadsheetApp.getUi(); // võtame liidese
ui.createMenu(" Minu skriptid") // "Minu skriptid"
.addItem("Loo tabel + KM", "looTabelJaKM")
.addItem("Lisa andmed", "lisaAndmed")
.addItem("Lisa kogus + kokku", "lisaKogusJaKokku")
.addItem("Puhasta tabel", "puhastaTabel")
.addToUi(); // lisame liidesesse
}





Nupud lisatakse läbi Sisesta → Joonis, seejärel paremklõps Määra skript → sisestatakse funktsiooni nimi.
Ülesanne 6 — Tabeli puhastamine + automaatne ümberarvutus
Funktsioon puhastaTabel() — “Puhasta tabel”
Puhastab read 2–8. Päis (rida 1) ja allpool olev kirjeldus jäävad puutumata.
Funktsioon onEdit() — reaalajas trigger
Käivitub automaatselt iga muudatuse korral. Kui muutub veerg D (Kogus) — arvutab Kokku automaatselt ümber.
// 6 Täiendav funktsioon (oma idee) - andmete kustutamine
function puhastaTabel() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// Puhastame read 2–8 (andmed + lisatud read)
// Kirjeldus allpool jääb alles!
sheet.getRange("A2:E8").clearContent();
// Taastame ripploendi D2:D8
var rule = SpreadsheetApp.newDataValidation()
.requireValueInList(["1","2","3","4","5","6","7","8","9","10"])
.setAllowInvalid(false)
.build();
sheet.getRange("D2:D8").setDataValidation(rule);
}
// 4 + 6 Automaatne arvutus kui kogus muutub (onEdit trigger)
function onEdit(e) {
var sheet = e.source.getActiveSheet();
var range = e.range;
// Kontrollime: kas muudeti veergu D (Kogus) real > 1
if (range.getColumn() == 4 && range.getRow() > 1) {
var row = range.getRow();
var hind = sheet.getRange(row, 2).getValue(); // hind
var kogus = sheet.getRange(row, 4).getValue(); // kogus
if (kogus === "" || kogus == 0) kogus = 1;
// Kirjutame Kokku automaatselt
sheet.getRange(row, 5).setValue(hind * kogus);
}
}

