Ponovo sam ovde da razgovaram o produktivnosti i automatizaciji unutar Gmail-a. Ovog puta, prelazimo u potpuno „štreberski“ režim i koristićemo Google Apps Script kako bismo unapredili vaše Gmail iskustvo.
Gmail poseduje brojne ugrađene opcije koje možete prilagoditi radi automatizacije zadataka i povećanja produktivnosti. Međutim, on ima i svoja ograničenja, a mnoge funkcije ne nude dovoljno mogućnosti za personalizaciju. Ovde možete preuzeti kontrolu pomoću Google Apps Script.
Uz njegovu pomoć, možete kreirati sopstvene skripte koje obavljaju zadatke koje Gmail izvorno ne podržava. Ne samo to, možete podesiti vremenske okidače za automatizaciju ovih skripti.
Da biste počeli, navodim nekoliko korisnih skripti koje će sigurno poboljšati vaše iskustvo sa Gmail-om. Osigurao sam da svaka skripta automatski rešava uobičajene probleme, kao što su duplikati ili automatsko kreiranje nove fascikle. Stoga, neke skripte mogu delovati nešto duže od svoje primarne svrhe.
Kreiranje Skripte u Google Apps Script
Pre nego što počnete sa primenom i prilagođavanjem ovih skripti, potrebno je da znate kako da kreirate skriptu u Google Apps Script i kako da je pokrenete. Evo kako to učiniti:
Otvorite Google Apps Script i kliknite na dugme „Novi projekat“ na levom panelu.
Ovde treba da uklonite sav postojeći kod i kopirate/nalepite skriptu koju ću vam dati. Nakon toga, kliknite na dugme „Sačuvaj“ kako biste sačuvali skriptu.
Da biste pokrenuli skriptu, kliknite na dugme „Pokreni“ pored dugmeta „Sačuvaj“. Od vas će se tražiti da date dozvole i dobićete upozorenje da skripta nije verifikovana. Možete zanemariti upozorenje i dati dozvole, jer je skripta za ličnu upotrebu i Google je nije pregledao.
To je to, skripta će se pokrenuti, a u logu izvršavanja će se pokazati da li je uspešno izvršena ili ne.
Podešavanje Okidača
Mnoge od ovih skripti najbolje funkcionišu kada se automatski pokreću. Srećom, Google Apps Script ima i sekciju za kreiranje vremenskih okidača za svaku skriptu, kako bi se automatizovano izvršavale.
Međutim, pre nego što vam objasnim kreiranje okidača, treba da znate da Google Apps Script ima određena ograničenja u zavisnosti od toga da li ste pretplaćeni na Google Workspace plan ili ne. Ako imate previše skripti koje se pokreću istovremeno i prečesto, možete dostići dnevni limit koji će zaustaviti uslugu na određeno vreme.
Iako imate mogućnost pokretanja skripti svakog minuta, to bi značajno iscrpilo vaš dnevni limit. Uverite se da ste podesili samo tajmer koji pouzdano obavlja posao.
Da biste kreirali okidač, kliknite na „Okidači“ na levom panelu dok je skripta otvorena, a zatim kliknite na dugme „Dodaj okidač“.
Ovde možete izabrati tajmer u minutama, satima, danima ili mesecima, kao i interval ponavljanja. Takođe možete izabrati fiksni datum i vreme kako bi se skripta pokrenula samo jednom u to vreme. Nakon što ste sve izabrali, kliknite na „Sačuvaj“ da biste kreirali okidač.
Ako niste dali dozvolu za pokretanje skripte kao što sam vam ranije rekao, od vas će se tražiti da date dozvolu pre kreiranja okidača.
Okidač će raditi neprekidno u skladu sa vašim podešavanjima. Ako naiđe na bilo kakav problem, obavestiće vas o grešci koja se dogodila.
Hajde sada da se posvetimo praktičnim primerima kako možete koristiti Google Apps Script za automatizaciju vaših Gmail zadataka.
Slanje Periodičnih E-poruka
function sendRecurringEmail() { var recipient = "[email protected]"; var subject = "Ovde unesite naslov"; var message = "Ovde unesite vašu poruku"; GmailApp.sendEmail(recipient, subject, message); }
Gmail vam omogućava da zakažete slanje e-poruka, ali ne i onih koje se ponavljaju. Bez obzira da li želite nekoga da podsetite na nešto ili da osigurate da vaša e-poruka ne bude zanemarena, ova jednostavna skripta šalje e-poruku na navedenu adresu sa naslovom i porukom koju vi unesete. Zatim možete podesiti ponavljajući okidač iz opcije „Okidači“.
U skripti izmenite odeljak za primaoca, naslov i poruku sa vašim stvarnim podacima. Uverite se da navodnici oko tekstova primere ostanu. Na primer, naslov bi trebalo da izgleda ovako:
var subject = "Važan Podsetnik";
Pošto okidači imaju maksimalno ograničenje do mesec dana, ponavljajuća poruka može se slati jednom mesečno. Nažalost, to znači da je ne možete koristiti za slanje čestitki za događaje koji se dešavaju jednom godišnje.
Filtriranje E-poruka sa Linkovima u Označene
function processUnreadEmailsWithLinks() { var labelName="E-poruke sa Linkovima"; 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-poruke sa linkovima u telu su obično važnije. Bez obzira da li primate izveštaje od kolega ili ste se pretplatili na biltene koji šalju određene resurse, kategorizacija e-poruka sa linkovima može biti veoma korisna.
Ova skripta pregleda sve nepročitane e-poruke na vašem Gmail nalogu i izdvaja one sa linkovima u telu e-pošte u novu oznaku pod nazivom „E-poruke sa Linkovima“. Po defaultu će tražiti e-poruke svuda u Gmail-u, ali možete suziti pretragu izmenom linije `var threads = GmailApp.search(‘is:unread’);`. Ispod je nekoliko načina na koje možete da je izmenite:
Pretraga samo u prijemnom sandučetu: `var threads = GmailApp.search(‘in:inbox is:unread’);`
Pretraga u drugim oznakama: `var threads = GmailApp.search(‘u:primljeno je:nepročitano ILI u:promocijama je:nepročitano ILI u:važno je:nepročitano’);`
Pretraga svih pročitanih/nepročitanih e-poruka u prijemnom sandučetu: `var threads = GmailApp.search(‘in:inbox’);`
Pretraga e-poruka od određenog pošiljaoca: `var threads = GmailApp.search(‘from:[email protected]‘);`
Ovi primeri bi trebalo da vam pruže ideju o tome kako možete da izmenite skriptu da biste suzili pretragu e-poruka sa linkovima. Takođe, verujem da će podešavanje dnevnog okidača biti više nego dovoljno za ovu vrstu e-poruka.
Automatsko Brisanje Starih E-poruka
function deleteOldEmails() { var threads = GmailApp.search('older_than:30d'); for (var i = 0; i < threads.length; i++) { threads[i].moveToTrash(); } }
Ako ne želite da čuvate stare e-poruke, možete koristiti ovu skriptu za brisanje e-poruka koje su starije od određenog perioda. Skripta ovde će tražiti sve e-poruke u Gmail-u starije od 30 dana i premestiti ih u korpu za otpatke. Možete izmeniti deo `’older_than:30d’` da biste odredili koliko stare e-poruke želite da izbrišete, na primer `’older_than:180d’`.
Ako umesto toga želite da izbrišete e-poruke iz određene oznake, možete izmeniti deo Gmail.App.search da biste uključili oznaku. Na primer:
`var threads = GmailApp.search(‘in:inbox older_than:30d’);`
Da bi proces bio automatski, kreirajte okidač koji automatski pokreće skriptu svakih nekoliko dana. U zavisnosti od toga koliko starih e-poruka želite da izbrišete, siguran sam da će nedeljni ili čak mesečni okidač biti u redu.
Čuvanje svih E-mail Adresa u Google Sheets
function getEmailAddresses() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheetName = "Email Addresses"; var sheet = ss.getSheetByName(sheetName); if (!sheet) { sheet = ss.insertSheet(sheetName); sheet.appendRow(["Email Address"]); } 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]]); } }
Ova skripta će pretražiti Gmail za sve e-poruke, kopirati imena i e-mail adrese pošiljaoca/primaoca i sačuvati ih u Google Sheets. Ovo može biti korisno u razne svrhe, poput kreiranja mailing liste za marketing putem e-pošte ili evidencije svih koji vas kontaktiraju.
Međutim, kreiranje ove skripte se malo razlikuje od ostalih, jer morate otvoriti Google Apps Script iz Google Sheets kako bi skripta mogla da prepozna list. Ovo je potrebno uraditi samo prvi put. Evo kako:
Otvorite novi Google Sheets. Kliknite na „Ekstenzije“ u gornjem meniju, a zatim izaberite „Apps Script“. Ovo će otvoriti Google Apps Script i možete dodati skriptu i pokrenuti je kao što sam ranije pokazao.
Skripta će kreirati novi list sa imenom „Email Addresses“, sa imenom i e-mail adresom u istoj ćeliji. Nećete morati ponovo da otvarate list za svaki sledeći okidač. Svaka nova e-mail adresa biće dodata na kraj liste, bez duplikata.
U zavisnosti od toga koliko često primate e-poruke od novih pošiljalaca, dnevni ili nedeljni okidač bi trebalo da budu dovoljni.
Automatsko Čuvanje E-mail Priloga na Google Drive
function onNewEmail(e) { var threads = GmailApp.getInboxThreads(0, 1); var messages = threads[0].getMessages(); var folderName = "Email Attachments"; 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); } } } } }
Veoma korisna skripta ako često primate važne priloge putem e-pošte. Ne samo da će sačuvati priloge, već će ih grupisati u mnogo bolji interfejs za upravljanje njima.
Ova skripta je kodirana da radi samo na novim e-porukama koje ćete dobiti nakon prvog pokretanja. Automatski će kreirati novu fasciklu pod imenom „Email Attachments“ na Google Drive ako već ne postoji. Izbegao sam korišćenje imena za proveru duplikata fajlova, jer mogu biti ista za različite fajlove. Skripta umesto toga proverava MD5 hash vrednost, koja je jedinstvena na osnovu sadržaja fajla.
Znam da ne žele svi da čuvaju samo nove priloge, već možda žele priloge iz već primljenih e-poruka. Za to, ispod je modifikovana skripta koja sledi ista pravila, ali umesto toga čuva priloge iz trenutno prisutnih e-poruka. Međutim, biće potrebno dosta vremena da sve sačuvate, u zavisnosti od toga koliko priloga imate.
function saveAllAttachmentsToDrive() { var folderName = "Email Attachments"; 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); } } } } }
Dnevna Inspirativna Ponuda
function sendDailyQuoteEmail() { var apiKey = 'YOUR_API_KEY'; 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="Dnevna Ponuda"; var message = `Evo vaše dnevne ponude:\n\n"${quote}"\n\n- ${author}`; GmailApp.sendEmail(recipient, subject, message); }
Možda ne donosi direktnu korist za vaše poslovanje ili upravljanje e-poštom, ali je sjajno da se motivišete da date sve od sebe svakog dana, direktno u vašem prijemnom sandučetu. Kada je ispravno podešena, ova skripta će koristiti API „They Said So“ kako bi vam slala njihove dnevne inspirativne citate putem e-pošte. Evo kako da je podesite:
Prvo vam je potreban lični API ključ sa „They Said So“. Na stranici API-ja „They Said So“ možete registrovati besplatan nalog da biste dobili ključ. Dobijate 5 besplatnih poziva, što je više nego dovoljno za dnevnu ponudu.
Kada dobijete ključ, zamenite deo „YOUR_API_KEY“ sa stvarnim ključem koji ste dobili od „They Said So“. Takođe, morate da zamenite [email protected] sa vašom stvarnom e-mail adresom ili nekom drugom ako želite da je podesite za nekog drugog.
Sada je sve što treba da uradite da podesite okidač koji se pokreće na dnevnoj bazi, pošto će pokretanje pre toga ponovo poslati samo citat tog dana.
Završne Reči
Ja lično nisam imao problema da pokrenem sve ove skripte zajedno, niti sam dostigao dnevni limit. Siguran sam da ćete i vi biti dobro, sve dok ne koristite previše agresivne okidače. Takođe, trebalo bi da proverite ove skripte kako biste bili sigurni da nijedna nema greške.