
Tere tulemast Google Apps Scriptsi viie laheda funktsiooni juhendisse.
Google Apps Script on võimas automatiseerimisplatvorm Google’i teenustele: Sheets, Calendar, Drive, Gmail ja palju muud.
Nüüd näitan teile Google Apps Scripti viit praktilist funktsiooni:
- Tabeli muudatuste automaatne logimine
- Sisestuse valideerimine e-posti teel
- Google’i kalendri sündmuste loomine Sheetsi andmetest
- Andmete salvestamine käivituste vahel
- Päästikute ja käitlejate testimine
Keskkonna ettevalmistamine
- Ava Google Sheets
- Menüü → Laiendused (vt pilti 1)
- Apps Script (vt pilti 2)


Ühe onEdit(e) käitleja loomine – onEdit on päästik, mis käivitub iga kord, kui lahtrit muudetakse.
- Ühes projektis saab olla ainult üks onEdit, seega piisab selle ühekordsest kirjutamisest ja seejärel levitamisest ning saate seda ka käsitsi kontrollida, aga kuna meil on
function onEdit(e) {
if (!e) return;
logChanges(e);
validateEmail(e);
}
Kõikide muudatuste logimine (muudatuste ajalugu) – loome logilehe, kuhu iga muudatus salvestatakse:
- Kuupäev ja kellaaeg
- Kasutaja e-posti aadress
- Lehe nimi
- Lahtri aadress
- Vanad ja uued väärtused
function logChanges(e) {
const ss = e.source;
const editedSheet = e.range.getSheet();
const sheetName = editedSheet.getName();
if (sheetName === 'Log') return;
let logSheet = ss.getSheetByName('Log');
if (!logSheet) {
logSheet = ss.insertSheet('Log');
logSheet.appendRow(['Timestamp', 'User', 'Sheet', 'Range', 'Old Value', 'New Value']);
logSheet.setFrozenRows(1);
}
logSheet.appendRow([
new Date(),
e.user ? e.user.getEmail() : 'Unknown',
sheetName,
e.range.getA1Notation(),
e.oldValue ?? '',
e.value ?? ''
]);
}
Näide näeks välja selline:

Meiliaadressi valideerimine kontaktide lehel – iga kord, kui kasutaja sisestab kontaktide lehe B-veergu meiliaadressi, kontrollib skript selle õigsust.
function validateEmail(e) {
const range = e.range;
const sheet = range.getSheet();
if (sheet.getName() !== "Contacts") return;
if (range.getColumn() !== 2 || range.getRow() === 1) return;
const email = (e.value || "").trim();
const regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
if (!regex.test(email)) {
range.setBackground("#ffcccc");
range.setNote("erorror email");
} else {
range.setBackground(null);
range.clearNote();
}
}
Näide Vt 3

Impordi oma ajakava Google’i kalendrisse – loo kalendrisündmusi otse Google’i arvutustabelitest.
function importScheduleToCalendar() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName('Schedule');
if (!sheet) throw new Error('list "Schedule" ei ole!');
const rows = sheet.getDataRange().getValues();
const calendar = CalendarApp.getDefaultCalendar();
for (let i = 1; i < rows.length; i++) {
const [eventName, dateStr, startTimeStr, endTimeStr, description] = rows[i];
if (!eventName || !dateStr) continue;
const start = new Date(`${dateStr} ${startTimeStr}`);
const end =
endTimeStr
? new Date(`${dateStr} ${endTimeStr}`)
: new Date(start.getTime() + 60 * 60 * 1000);
calendar.createEvent(eventName, start, end, { description });
Utilities.sleep(30);
}
}
Positsioonide hoidmine: Passilett
function incrementRunCount() {
const props = PropertiesService.getScriptProperties();
const count = Number(props.getProperty('runCount') || 0);
props.setProperty('runCount', count + 1);
Logger.log(`Скрипт запущен ${count + 1} раз`);
}
Näide (vt 5)
