Google Apps Script
Patru rețete scurte pentru Google Sheets. Copiază-le într-un proiect Apps Script legat de foaie și schimbă coloanele înainte să le rulezi.
Ghid: primii pași cu Apps Script
Meniu în foaie
Adaugă un meniu când se deschide foaia și rulează o funcție pe rândul selectat.
function onOpen() {
SpreadsheetApp.getUi()
.createMenu('Tools')
.addItem('Process active row', 'processActiveRow')
.addToUi();
}
function processActiveRow() {
var sheet = SpreadsheetApp.getActiveSheet();
var row = sheet.getActiveCell().getRow();
if (row === 1) {
throw new Error('Select a data row, not the header.');
}
SpreadsheetApp.getActive().toast('Row ' + row);
}onOpen este un trigger simplu. Funcția din meniu poate cere autorizare când o rulezi prima dată.
Rândurile ca obiecte
Citește un sheet: primul rând este antet, restul devine o listă de obiecte. Rândurile goale sunt sărite.
function readSheetObjects(sheetName) {
var sheet = SpreadsheetApp.getActive().getSheetByName(sheetName);
if (!sheet) throw new Error('Sheet not found: ' + sheetName);
var values = sheet.getDataRange().getValues();
if (values.length < 2) return [];
var headers = values[0].map(function (header) { return String(header).trim(); });
var objects = [];
for (var r = 1; r < values.length; r++) {
var row = values[r];
var blank = row.every(function (cell) { return String(cell).trim() === ''; });
if (blank) continue;
var item = {};
for (var c = 0; c < headers.length; c++) {
if (!headers[c]) continue;
item[headers[c]] = row[c];
}
objects.push(item);
}
return objects;
}Numele de coloane trebuie să fie unice. Celulele goale rămân șiruri goale.
Dată când se editează coloana B
Scrie data curentă în coloana E când cineva editează coloana B, sub antet.
function onEdit(e) {
if (!e || !e.range) return;
var range = e.range;
if (range.getColumn() !== 2 || range.getRow() === 1) return;
range.getSheet().getRange(range.getRow(), 5).setValue(new Date());
}Este un trigger simplu: pornește la editarea din interfață, nu la modificările făcute de un alt script sau de API.
Email din rândul curent
Trimite un email folosind coloanele A (nume), B (email) și C (text) de pe rândul selectat.
function emailActiveRow() {
var sheet = SpreadsheetApp.getActiveSheet();
var row = sheet.getActiveCell().getRow();
if (row === 1) throw new Error('Select a data row, not the header.');
var values = sheet.getRange(row, 1, 1, 3).getValues()[0];
var name = String(values[0] || '').trim();
var email = String(values[1] || '').trim();
var note = String(values[2] || '').trim();
if (!email) throw new Error('Column B is empty.');
MailApp.sendEmail({
to: email,
subject: 'Update',
body: 'Hello ' + name + ',\n\n' + note + '\n'
});
}Apeleaz-o din meniu, nu din onEdit. MailApp cere autorizare și nu are voie într-un trigger simplu. Schimbă subiectul înainte de utilizare.