Revin cu o nouă discuție despre productivitate și automatizare în Gmail. De această dată, vom explora modul „geek” și vom folosi Google Apps Script pentru a vă transforma experiența Gmail într-una mult mai eficientă.
Gmail dispune de o serie de setări integrate pe care le puteți modifica pentru a automatiza sarcini și a spori productivitatea. Cu toate acestea, acestea au limite, iar multe funcții nu oferă suficiente opțiuni de personalizare. Aici intervine Google Apps Script, permițându-vă să preluați controlul.
Cu ajutorul acestuia, puteți crea scripturi personalizate care pot realiza sarcini pe care Gmail nu le poate îndeplini în mod nativ. Mai mult, puteți configura declanșatoare bazate pe timp pentru a automatiza executarea acestor scripturi.
Pentru a vă familiariza, am pregătit o serie de scripturi utile care vă vor îmbunătăți semnificativ experiența Gmail. Fiecare script a fost conceput pentru a rezolva automat probleme comune, cum ar fi eliminarea duplicatelor sau crearea automată a unor foldere noi. Unele scripturi pot părea mai ample decât este strict necesar, datorită scopului lor extins.
Crearea unui script în Google Apps Script
Înainte de a aplica și personaliza aceste scripturi, trebuie să știți cum să creați un script în Google Apps Script și să îl executați. Iată cum:
Deschideți Google Apps Script și faceți clic pe butonul „Proiect nou” din panoul din stânga.

Aici, eliminați tot codul existent și copiați/lipiți scriptul pe care îl voi furniza. Apoi, faceți clic pe butonul „Salvare” pentru a salva scriptul.

Pentru a executa scriptul, faceți clic pe butonul „Run” situat lângă „Salvare”. Vi se va solicita să acordați permisiuni și veți primi un avertisment că scriptul nu este verificat. Puteți ignora avertismentul și acorda permisiunile, deoarece scriptul este pentru uz personal și nu a fost revizuit de Google.

Asta este tot! Scriptul va rula, iar jurnalul de execuție va indica dacă a fost executat cu succes sau nu.
Configurarea unui declanșator
Multe dintre aceste scripturi funcționează cel mai bine când sunt declanșate automat. Din fericire, Google Apps Script oferă o secțiune pentru crearea declanșatoare bazate pe timp pentru fiecare script, permițându-le să ruleze automat.
Înainte de a vă explica cum să creați un declanșator, trebuie să știți că Google Apps Script are limite de cotă, care depind de abonamentul dvs. la Google Workspace. Dacă rulați prea multe scripturi simultan și prea frecvent, este posibil să atingeți cota zilnică, ceea ce va întrerupe serviciul pentru acel moment.
Chiar dacă aveți opțiunea de a executa scripturi la fiecare minut, acest lucru ar epuiza rapid cota dvs. zilnică. Asigurați-vă că setați un interval de timp realist, care să îndeplinească sarcinile în mod fiabil.
Pentru a crea un declanșator, faceți clic pe „Declanșatoare” din panoul din stânga în timp ce scriptul este deschis, apoi faceți clic pe butonul „Adăugați declanșator”.

Aici puteți alege un interval de timp, de la minute la luni. Puteți selecta și o dată și oră fixă pentru a rula scriptul o singură dată la momentul specificat. După ce ați selectat toate setările, faceți clic pe „Salvare” pentru a crea declanșatorul.

Dacă nu ați acordat permisiunea de a rula scriptul, așa cum v-am arătat mai devreme, veți fi solicitat să faceți acest lucru înainte de a crea declanșatorul.
În funcție de selecția dvs., declanșatorul va rula în mod continuu. Dacă apare vreo problemă, veți primi o notificare împreună cu eroarea care a apărut.
Acum, haideți să vedem câteva exemple practice despre cum puteți utiliza Google Apps Script pentru a vă automatiza sarcinile Gmail.
Trimiterea de e-mailuri recurente
function sendRecurringEmail() {
var recipient = "[email protected]";
var subject = "Subiectul tau aici";
var message = "Mesajul tau personalizat aici";
GmailApp.sendEmail(recipient, subject, message);
}
Gmail vă permite să programați e-mailuri, dar nu e-mailuri recurente. Indiferent dacă doriți să reamintiți ceva cuiva sau să vă asigurați că e-mailul dvs. nu este trecut cu vederea, acest script simplu trimite un e-mail la adresa furnizată, cu subiectul și mesajul pe care le specificați. Puteți configura apoi un declanșator recurent din opțiunea „Declanșatoare”.
În script, modificați secțiunea destinatarului, subiectului și mesajului cu detaliile reale. Asigurați-vă că ghilimelele din jurul textului exemplu rămân. De exemplu, subiectul ar trebui să arate astfel:
var subject = "Mementou Important";

Deoarece declanșatoarele au o limită maximă de o lună, mesajul recurent trebuie trimis o dată pe lună. Din păcate, acest lucru înseamnă că nu îl puteți utiliza pentru a trimite urări pentru evenimente care au loc anual.

Filtrarea e-mailurilor cu link-uri către o etichetă
function processUnreadEmailsWithLinks() {
var labelName="E-mailuri cu Link-uri";
var label = GmailApp.getUserLabelByName(labelName);
if (!label) {
label = GmailApp.createLabel(labelName);
}
var threads = GmailApp.search('is:unread');
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
for (var j = 0; j < messages.length; j++) {
var message = messages[j];
var body = message.getBody();
if (bodyContainsLinks(body)) {
label.addToThread(threads[i]);
}
}
}
}
function bodyContainsLinks(body) {
var regex = /https?:\/\/[^\s<>"']+/g;
return regex.test(body);
}
E-mailurile cu link-uri în conținut sunt, de obicei, mai importante. Indiferent dacă primiți rapoarte de la un coleg sau sunteți abonat la buletine informative care trimit resurse specifice, clasificarea e-mailurilor cu link-uri poate fi foarte utilă.
Acest script analizează toate e-mailurile necitite din contul dvs. Gmail și le separă pe cele cu link-uri în corpul e-mailului, adăugându-le într-o nouă etichetă denumită „E-mailuri cu Link-uri”. În mod implicit, va căuta e-mailuri în tot Gmail-ul, dar puteți restrânge căutarea editând linia: var threads = GmailApp.search(‘is:unread’); Mai jos sunt câteva modalități de a edita linia:
Căutarea doar în Inbox: var threads = GmailApp.search(‘in:inbox is:unread’);
Căutarea în alte etichete: var threads = GmailApp.search(‘in:inbox is:unread OR in:promotions is:unread OR in:important is:unread’);
Căutarea tuturor e-mailurilor citite/necitite din Inbox: var threads = GmailApp.search(‘in:inbox’);
Căutarea e-mailurilor de la un anumit expeditor: var threads = GmailApp.search(‘from:[email protected]‘);

Aceste exemple vă oferă o idee despre cum puteți modifica scriptul pentru a restrânge căutarea e-mailurilor cu link-uri. Consider că un declanșator zilnic va fi mai mult decât suficient pentru acest tip de e-mailuri.
Ștergerea automată a e-mailurilor vechi
function deleteOldEmails() {
var threads = GmailApp.search('older_than:30d');
for (var i = 0; i < threads.length; i++) {
threads[i].moveToTrash();
}
}
Dacă nu doriți să păstrați e-mailurile vechi, puteți utiliza acest script pentru a șterge e-mailurile care depășesc o anumită perioadă. Scriptul de aici va căuta toate e-mailurile din Gmail mai vechi de 30 de zile și le va muta în Coșul de gunoi. Puteți modifica valoarea „older_than:30d” pentru a specifica cât de vechi doriți să fie e-mailurile pe care le ștergeți, de exemplu „older_than:180d”.

Dacă doriți să ștergeți e-mailurile dintr-o anumită etichetă, puteți modifica partea Gmail.App.search pentru a include eticheta. De exemplu:
var threads = GmailApp.search(‘in:inbox older_than:30d’);
Pentru a automatiza procesul, creați un declanșator care să ruleze automat scriptul la fiecare câteva zile. În funcție de cât de vechi doriți să fie e-mailurile pe care le ștergeți, un declanșator săptămânal sau chiar lunar va fi suficient.
Salvarea tuturor adreselor de e-mail în Foi de calcul Google
function getEmailAddresses() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetName = "Adrese de E-mail";
var sheet = ss.getSheetByName(sheetName);
if (!sheet) {
sheet = ss.insertSheet(sheetName);
sheet.appendRow(["Adresa de E-mail"]);
}
var threads = GmailApp.getInboxThreads();
var emailAddresses = [];
var existingData = sheet.getDataRange().getValues();
if (existingData.length > 1) {
var existingEmailAddresses = existingData.slice(1).flat();
} else {
var existingEmailAddresses = [];
}
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
for (var j = 0; j < messages.length; j++) {
var emailAddress = messages[j].getFrom();
if (emailAddresses.indexOf(emailAddress) === -1 && existingEmailAddresses.indexOf(emailAddress) === -1) {
emailAddresses.push(emailAddress);
}
}
}
for (var k = 0; k < emailAddresses.length; k++) {
sheet.appendRow([emailAddresses[k]]);
}
}
Acest script va căuta în Gmail toate e-mailurile și va copia numele și adresa de e-mail ale expeditorilor/destinatarilor și le va salva în Foi de calcul Google. Această funcție poate fi utilă pentru crearea unei liste de corespondență pentru marketing prin e-mail sau pentru a ține evidența tuturor persoanelor care vă contactează.
Cu toate acestea, crearea acestui script diferă ușor de celelalte, deoarece trebuie să deschideți Google Apps Script din interiorul Foilor de calcul Google, astfel încât acesta să poată identifica foaia. Această acțiune este necesară doar prima dată. Iată cum:
Deschideți o foaie nouă în Foi de calcul Google. Aici, faceți clic pe „Extensii” în meniul de sus, apoi selectați „Apps Script”. Această acțiune va deschide Google Apps Script și veți putea adăuga scriptul și îl veți putea rula, așa cum am arătat anterior.

Scriptul va crea o nouă foaie numită „Adrese de e-mail”, cu numele și adresele de e-mail scrise în aceeași celulă. Nu va trebui să deschideți din nou foaia în viitor pentru fiecare declanșator. Orice adresă de e-mail nouă va fi adăugată la finalul foii, fără duplicate.

În funcție de cât de des primiți e-mailuri de la noi expeditori, un declanșator zilnic sau săptămânal ar trebui să fie adecvat.
Salvarea automată a atașamentelor de e-mail pe Google Drive
function onNewEmail(e) {
var threads = GmailApp.getInboxThreads(0, 1);
var messages = threads[0].getMessages();
var folderName = "Atașamente E-mail";
var folderIterator = DriveApp.getFoldersByName(folderName);
var folder;
if (folderIterator.hasNext()) {
folder = folderIterator.next();
} else {
folder = DriveApp.createFolder(folderName);
}
for (var i = 0; i < messages.length; i++) {
var message = messages[i];
if (message.getAttachments().length > 0) {
var attachments = message.getAttachments();
for (var j = 0; j < attachments.length; j++) {
var attachment = attachments[j];
var attachmentHash = Utilities.base64Encode(Utilities.computeDigest(Utilities.DigestAlgorithm.MD5, attachment.getBytes()));
var existingFiles = folder.getFiles();
var isDuplicate = false;
while (existingFiles.hasNext()) {
var existingFile = existingFiles.next();
var existingFileHash = Utilities.base64Encode(Utilities.computeDigest(Utilities.DigestAlgorithm.MD5, existingFile.getBlob().getBytes()));
if (attachmentHash === existingFileHash) {
isDuplicate = true;
break;
}
}
if (!isDuplicate) {
folder.createFile(attachment);
}
}
}
}
}
Acesta este un script foarte util dacă primiți frecvent atașamente importante prin e-mail. Nu numai că va păstra atașamentele, dar le va grupa și într-o interfață mult mai eficientă pentru a le gestiona.
Acest script este programat să funcționeze doar pentru e-mailurile noi pe care le primiți după prima rulare. Va crea automat un nou dosar numit „Atașamente E-mail” în Google Drive, dacă acesta nu există. Am evitat să folosim nume pentru verificarea fișierelor duplicate, deoarece acestea pot fi identice pentru fișiere diferite. Scriptul verifică în schimb o valoare hash MD5, care este unică pe baza conținutului fișierului.

Știu că nu toată lumea dorește să salveze doar atașamentele noi și poate dorește și atașamentele din e-mailurile deja primite. Pentru aceasta, mai jos este un script modificat care urmează aceleași reguli, dar salvează atașamentele din e-mailurile existente. Rețineți că va dura destul de mult timp pentru a salva totul, în funcție de câte atașamente aveți.
function saveAllAttachmentsToDrive() {
var folderName = "Atașamente E-mail";
var folderIterator = DriveApp.getFoldersByName(folderName);
var folder;
if (folderIterator.hasNext()) {
folder = folderIterator.next();
} else {
folder = DriveApp.createFolder(folderName);
}
var threads = GmailApp.getInboxThreads();
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
for (var j = 0; j < messages.length; j++) {
var message = messages[j];
var attachments = message.getAttachments();
for (var k = 0; k < attachments.length; k++) {
var attachment = attachments[k];
var attachmentHash = Utilities.base64Encode(Utilities.computeDigest(Utilities.DigestAlgorithm.MD5, attachment.getBytes()));
var existingFiles = folder.getFiles();
var isDuplicate = false;
while (existingFiles.hasNext()) {
var existingFile = existingFiles.next();
var existingFileHash = Utilities.base64Encode(Utilities.computeDigest(Utilities.DigestAlgorithm.MD5, existingFile.getBlob().getBytes()));
if (attachmentHash === existingFileHash) {
isDuplicate = true;
break;
}
}
if (!isDuplicate) {
folder.createFile(attachment);
}
}
}
}
}
Obțineți un citat inspirațional zilnic
function sendDailyQuoteEmail() {
var apiKey = 'CHEIA_TA_API';
var endpoint="https://quotes.rest/qod";
var response = UrlFetchApp.fetch(endpoint, {
headers: {
'X-TheySaidSo-Api-Secret': apiKey
}
});
var data = JSON.parse(response.getContentText());
var quoteContents = data.contents.quotes[0];
var quote = quoteContents.quote;
var author = quoteContents.author;
var recipient="[email protected]";
var subject="Citat Zilnic";
var message = `Iată citatul tău zilnic:\n\n"${quote}"\n\n- ${author}`;
GmailApp.sendEmail(recipient, subject, message);
}
Acest script nu are o utilizare directă în activitatea dvs. sau în gestionarea e-mailurilor, dar este o modalitate excelentă de a vă motiva zilnic, direct în căsuța de e-mail. Atunci când este configurat corect, acest script va utiliza API-ul They Said So pentru a vă trimite zilnic un citat inspirațional prin e-mail. Iată cum să-l configurați:
Mai întâi, aveți nevoie de o cheie API personală de la They Said So. Pe pagina API-ul They Said So vă puteți înregistra pentru un cont gratuit pentru a obține cheia. Acesta oferă 5 solicitări gratuite, ceea ce este mai mult decât suficient pentru un citat zilnic.
După ce aveți cheia, înlocuiți textul CHEIA_TA_API cu cheia reală pe care ați primit-o de la They Said So. De asemenea, înlocuiți [email protected] cu adresa dvs. de e-mail reală sau cu adresa cuiva pentru care doriți să configurați scriptul.

Acum, tot ce trebuie să faceți este să configurați un declanșator care să ruleze zilnic, deoarece rularea acestuia mai devreme va retrimitere doar citatul zilei curente.

Concluzie
Personal, nu am întâmpinat nicio problemă la rularea tuturor acestor scripturi împreună și nici nu am atins cota zilnică. Sunt sigur că veți fi bine și dvs., atâta timp cât nu folosiți declanșatoare prea agresive. De asemenea, vă recomand să verificați scripturile periodic pentru a vă asigura că nu întâmpină erori.