6 proiecte de script Google Apps pentru a vă îmbunătăți experiența Gmail

Încă o dată, sunt aici pentru a vorbi despre productivitate și automatizare în Gmail. De data aceasta, vom folosi modul Geek și vom folosi Google Apps Script pentru a vă îmbunătăți experiența Gmail.

Gmail are multe setări încorporate pe care le puteți modifica pentru a automatiza sarcinile și a crește productivitatea. Cu toate acestea, are limitele sale și multe caracteristici nu oferă suficiente opțiuni de personalizare. Aici puteți lua lucrurile în propriile mâini folosind Google Apps Script.

Cu acesta, puteți crea scripturi personalizate care pot îndeplini sarcini pe care Gmail nu le poate realiza în mod nativ. Nu numai atât, puteți seta declanșatoare bazate pe timp pentru a automatiza aceste scripturi.

Pentru a începe, am enumerat câteva scripturi utile care vă vor îmbunătăți cu siguranță experiența Gmail. M-am asigurat că fiecare script rezolvă automat problemele comune, cum ar fi duplicatele sau crearea automată a unui folder nou. Prin urmare, unele scripturi ar putea părea puțin mai lungi decât scopul propus.

Creați un Script în Google Apps Script

Înainte de a începe să aplicați și să personalizați 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 trebuie să eliminați tot codul deja scris și să 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 chiar lângă Salvare. Vi se va cere să acordați permisiuni și va apărea un avertisment că scriptul nu este verificat. Puteți ignora avertismentul și puteți acorda permisiuni, deoarece scriptul este pentru uz personal și Google nu l-a examinat.

Asta e, scriptul va rula și va arăta în jurnalul de execuție dacă a fost executat cu succes sau nu.

Configurați un declanșator

Multe dintre aceste scripturi funcționează cel mai bine atunci când sunt declanșate automat. Din fericire, Google Apps Script are și o secțiune pentru a crea declanșatoare bazate pe timp pentru fiecare script, astfel încât să se execute automat.

Cu toate acestea, înainte de a vă spune despre crearea unui declanșator, ar trebui să știți asta Google Apps Script are cote limitate în funcție de faptul dacă sunteți abonat la Planul Google Workspace sau nu. Dacă aveți prea multe scripturi care rulează simultan și prea des, atunci este posibil să atingeți cota zilnică care va opri serviciul pentru acel moment.

Chiar dacă aveți opțiunea de a executa scripturi în fiecare minut, ar fi o pierdere enormă pentru cota dvs. zilnică. Asigurați-vă că setați doar un cronometru care face treaba în mod fiabil.

Pentru a crea un declanșator, faceți clic pe Declanșatoare în panoul din stânga în timp ce scriptul este deschis și apoi faceți clic pe butonul Adăugați declanșator.

Aici puteți alege un cronometru în minute până la luni și intervalul. De asemenea, puteți selecta o dată și o oră fixă ​​pentru a rula scriptul o singură dată la acel moment specific. După ce toate sunt selectate, faceți clic pe Salvare pentru a crea declanșatorul.

Dacă nu ați dat permisiunea de a rula scriptul așa cum v-am spus mai devreme, atunci vi se va cere să acordați permisiunea înainte de a crea declanșatorul.

Pe baza selecției dvs., declanșatorul va rula continuu. Dacă se confruntă cu vreo problemă, vă va anunța î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.

Trimite e-mailuri recurente

function sendRecurringEmail() {
  var recipient = "[email protected]";
  var subject = "Your subject here";
  var message = "Your custom message here";

  GmailApp.sendEmail(recipient, subject, message);
}

Gmail vă permite să programați e-mailuri, dar nu e-mailuri recurente. Indiferent dacă vrei să reamintești ceva cuiva sau vrei să te asiguri că e-mailul tău nu este trecut cu vederea. Acest script simplu trimite un e-mail la adresa furnizată cu subiectul și mesajul pe care le furnizați. Puteți configura apoi un declanșator recurent din opțiunea Declanșatoare.

În script, editaț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 = "Important Reminder";

Deoarece declanșatoarele au o limită maximă de până la o lună, mesajul recurent trebuie trimis o dată pe lună. Din păcate, acest lucru înseamnă că nu îl puteți folosi pentru a trimite urări pentru ocazii care se întâmplă anual.

Filtrați e-mailurile cu linkuri către o etichetă

function processUnreadEmailsWithLinks() {
  var labelName="Emails with Links";
  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 corp sunt de obicei mai importante. Indiferent dacă primești rapoarte de la un coleg sau te-ai abonat la buletine informative care trimit resurse specifice, clasificarea e-mailurilor cu linkuri poate fi foarte utilă.

Acest script analizează toate e-mailurile necitite din contul dvs. Gmail și le separă pe cele cu linkuri în corpul e-mailului la o nouă etichetă numită „E-mailuri cu linkuri”. În mod implicit, va căuta e-mailuri peste tot în Gmail, dar puteți restrânge căutarea editând firele var = GmailApp.search(‘is:unread’); linia. Mai jos sunt câteva modalități în care le puteți edita:

Căutați numai în Inbox: var threads = GmailApp.search(‘in:inbox is:unread’);

Căutați în alte etichete: var threads = GmailApp.search(‘in:inbox is:unread SAU in:promotions is:unread SAU in:important is:unread’);

Căutați toate e-mailurile citite/necitite în Inbox: var threads = GmailApp.search(‘in:inbox’);

Căutați e-mailuri de la un anumit expeditor: var threads = GmailApp.search(‘from:[email protected]‘);

Aceste exemple ar trebui să vă ofere o idee despre cum puteți edita scriptul pentru a restrânge e-mailurile cu linkuri. De asemenea, cred că configurarea unui declanșator zilnic va fi mai mult decât suficientă pentru astfel de tipuri de e-mailuri.

Ștergeți automat e-mailurile 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, atunci puteți utiliza acest script pentru a șterge e-mailurile care sunt mai vechi decât o anumită perioadă. Scriptul de aici va căuta toate e-mailurile din Gmail care au mai mult de 30 de zile și le va trimite la Coș de gunoi. Puteți edita partea „older_than:30d” pentru a specifica cât de vechi e-mailuri doriți să ștergeți, cum ar fi „older_than:180d”.

Dacă doriți să ștergeți e-mailurile de la o anumită etichetă, atunci puteți edita partea Gmail.App.search pentru a include eticheta. Ca aceasta:

var threads = GmailApp.search(‘in:inbox older_than:30d’);

Pentru a automatiza procesul, creați un declanșator care rulează automat scriptul la fiecare câteva zile. În funcție de cât de vechi e-mail-uri doriți să ștergeți, sunt sigur că un declanșator săptămânal sau chiar unul lunar va fi bine.

Salvați toate adresele de e-mail în Foi de calcul Google

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]]);
  }
}

Acest script va căuta în Gmail toate e-mailurile și va copia numele și adresa de e-mail ale expeditorilor/destinatorilor și le va salva în Foi de calcul Google. Pot fi multe utilizări pentru acest lucru, cum ar fi crearea unei liste de corespondență pentru marketing prin e-mail sau crearea unei evidențe a tuturor celor care vă contactează.

Cu toate acestea, crearea acestui script este puțin diferită de altele, deoarece trebuie să deschideți Google Apps Script din interiorul Foilor de calcul Google, astfel încât să poată identifica foaia. Totuși, trebuie făcut doar pentru prima dată. Iată cum:

Deschideți o foaie nouă în Foi de calcul Google. Aici faceți clic pe Extensii în meniul de mai sus și apoi selectați Apps Script. Acest lucru va deschide Google Apps Script și puteți adăuga scriptul și îl puteți rula așa cum am demonstrat anterior.

Scriptul va crea o nouă foaie cu numele „Adrese de e-mail”, cu numele și adresa de e-mail scrise în aceeași celulă. Nu va trebui să deschideți foaia din nou în viitor pentru fiecare declanșator. Orice adresă de e-mail nouă va fi actualizată în foaia de la sfârșit, 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 bun.

Salvați automat atașamentele de e-mail pe 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);
        }
      }
    }
  }
}

Un script foarte la îndemână dacă primiți adesea atașamente importante prin e-mail. Acest lucru nu numai că va păstra atașamentele, ci și le va grupa într-o interfață mult mai bună pentru a le gestiona.

Acest script este codificat pentru a funcționa numai pentru e-mailurile noi pe care le veți primi după momentul în care a rulat pentru prima dată. Acesta va crea automat un nou dosar numit „Atașamente la e-mail” în Google Drive, dacă nu este disponibil. De asemenea, am evitat să folosesc nume pentru verificarea fișierelor duplicate, deoarece pot fi aceleași 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șamente noi și poate dori și atașamente de la e-mailurile deja primite. Pentru aceasta, mai jos este un script modificat care urmează aceleași reguli, dar salvează atașamentele din e-mailurile prezente în prezent. Cu toate acestea, va dura destul de mult timp pentru a salva totul, în funcție de câte atașamente aveți.

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);
        }
      }
    }
  }
}

Obțineți un citat inspirațional zilnic

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="Daily Quote";
  var message = `Here is your daily quote:\n\n"${quote}"\n\n- ${author}`;

  GmailApp.sendEmail(recipient, subject, message);
}

Este posibil să nu aibă o utilizare directă în activitatea dvs. sau în gestionarea e-mailului, dar este grozav pentru a vă stimula să vă oferi totul în fiecare zi chiar în căsuța de e-mail. Când este configurat corect, acest script va folosi API-ul They Said So pentru a vă trimite citatul zilnic inspirațional prin e-mail. Iată cum să o configurați:

În primul rând, aveți nevoie de o cheie API personală de la They Said So. Pe Au spus așa API pe pagină puteți înregistra un cont gratuit pentru a obține cheia. Dă 5 apeluri gratuit, ceea ce este mai mult decât suficient pentru o cotație zilnică.

După ce aveți cheia, înlocuiți partea YOUR_API_KEY cu cheia reală pe care ați primit-o de la They Said So. De asemenea, trebuie să înlocuiți [email protected] parte cu adresa ta de e-mail reală sau a altcuiva dacă vrei să o configurezi pentru altcineva.

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

Cuvinte finale

Eu personal nu am avut nicio problemă să rulez toate aceste scripturi împreună și nici nu ating cota zilnică. Sunt sigur că o să fii bine și tu, atâta timp cât nu folosești declanșatoare prea agresive. De asemenea, ar trebui să verificați aceste scripturi pentru a vă asigura că niciun script nu se confruntă cu erori.

  Cum se remediază eroarea WOW #134 Fatal Condition