Forbedre Gmail-opplevelsen med Google Apps Script
Igjen er jeg her for å diskutere produktivitet og automatisering i Gmail. Denne gangen dykker vi dypt inn i teknologiens verden og utforsker hvordan Google Apps Script kan transformere Gmail-opplevelsen din.
Gmail tilbyr et utvalg av innebygde innstillinger for å automatisere oppgaver og forbedre effektiviteten. Imidlertid er det begrensninger, og mange funksjoner mangler tilpasningsmuligheter. Det er her Google Apps Script kommer inn i bildet, slik at du kan ta kontroll.
Med Google Apps Script kan du utvikle skreddersydde skript for å utføre handlinger som Gmail ikke kan gjøre alene. Du kan også sette opp tidsbaserte triggere for å automatisere disse skriptene.
La oss se på noen nyttige skript som kan forbedre din Gmail-opplevelse. Jeg har lagt vekt på skript som automatisk løser vanlige problemer, som duplikater og oppretting av nye mapper. Noen skript kan derfor virke lengre enn nødvendig for sin primære funksjon.
Opprett et skript i Google Apps Script
Før du bruker disse skriptene, er det viktig å vite hvordan man oppretter og kjører skript i Google Apps Script. Her er fremgangsmåten:
Åpne Google Apps Script og klikk på «Nytt prosjekt» i venstre panel.
Slett all eksisterende kode, og lim inn det skriptet du ønsker å bruke. Klikk deretter på «Lagre»-knappen for å lagre skriptet.
For å kjøre skriptet, klikk på «Kjør»-knappen ved siden av «Lagre». Du vil bli bedt om å gi tillatelser og vil motta en advarsel om at skriptet ikke er verifisert. Du kan ignorere advarselen og gi tillatelser da skriptet er for personlig bruk og ikke har blitt vurdert av Google.
Skriptet vil nå kjøre, og du vil se i loggen om det har blitt utført eller ikke.
Sett opp en utløser
Mange skript fungerer optimalt når de kjøres automatisk. Google Apps Script tillater opprettelse av tidsbaserte triggere for å kjøre skript automatisk.
Før du lager en utløser, er det viktig å være klar over at Google Apps Script har begrensede kvoter avhengig av om du har et Google Workspace-abonnement eller ikke. For mange skript som kjører for ofte, kan nå den daglige kvoten og dermed stoppe tjenesten.
Selv om du kan kjøre skript hvert minutt, vil det belaste den daglige kvoten. Det er anbefalt å sette opp en tidsplan som er pålitelig og ikke for ofte.
For å lage en trigger, klikk på «Triggers» i venstre panel og deretter «Legg til Trigger».
Velg et tidsintervall, alt fra minutter til måneder. Du kan også velge en bestemt dato og tid for å kjøre skriptet kun én gang. Når alle valgene er gjort, klikker du på «Lagre» for å opprette triggeren.
Hvis du ikke har gitt tillatelse til å kjøre skriptet tidligere, vil du bli bedt om å gjøre det før du kan opprette en trigger.
Triggeren vil kjøre kontinuerlig basert på dine valg. Hvis det oppstår feil, vil du motta et varsel med detaljer om feilen.
La oss nå dykke inn i praktiske eksempler på hvordan du kan bruke Google Apps Script for å automatisere Gmail-oppgaver.
Send repeterende e-poster
function sendRecurringEmail() { var mottaker = "[email protected]"; var emne = "Ditt emne her"; var melding = "Din tilpassede melding her"; GmailApp.sendEmail(mottaker, emne, melding); }
Gmail tillater planlegging av e-poster, men ikke repeterende e-poster. Dette enkle skriptet sender en e-post til den angitte adressen med angitt emne og melding. Du kan deretter konfigurere en repeterende trigger under «Triggers»-alternativet.
Rediger feltene for mottaker, emne og melding i skriptet med dine faktiske detaljer. Pass på at anførselstegnene rundt teksten beholdes. For eksempel:
var emne = "Viktig påminnelse";
Siden triggere har en maksgrense på en måned, må repeterende meldinger sendes maks én gang per måned. Dessverre er det ikke mulig å sende repeterende meldinger for årlige hendelser.
Filtrer e-poster med lenker til en etikett
function processUnreadEmailsWithLinks() { var etikettNavn="E-poster med lenker"; var etikett = GmailApp.getUserLabelByName(etikettNavn); if (!etikett) { etikett = GmailApp.createLabel(etikettNavn); } var tråder = GmailApp.search('is:ulest'); for (var i = 0; i < tråder.length; i++) { var meldinger = tråder[i].getMessages(); for (var j = 0; j < meldinger.length; j++) { var melding = meldinger[j]; var kropp = melding.getBody(); if (bodyContainsLinks(kropp)) { etikett.addToThread(tråder[i]); } } } } function bodyContainsLinks(kropp) { var regex = /https?:\/\/[^\s<>"']+/g; return regex.test(kropp); }
E-poster med lenker er ofte viktigere. Dette skriptet ser på alle uleste e-poster i Gmail-kontoen din og filtrerer de med lenker i e-postteksten til en ny etikett kalt «E-poster med lenker». Som standard vil den søke gjennom hele Gmail, men du kan begrense søket ved å redigere `var tråder = GmailApp.search(«is:ulest»);` linje. Her er noen eksempler:
Søk kun i innboksen: `var tråder = GmailApp.search(«in:inbox is:ulest»);`
Søk i andre etiketter: `var tråder = GmailApp.search(«in:inbox is:ulest OR in:kampanjer is:ulest OR in:viktig is:ulest»);`
Søk i alle leste/uleste e-poster i innboksen: `var tråder = GmailApp.search(«in:inbox»);`
Søk i e-poster fra en bestemt avsender: `var tråder = GmailApp.search(«from:[email protected]«);`
Disse eksemplene gir deg en idé om hvordan du kan redigere skriptet for å begrense søket etter e-poster med lenker. Det er tilstrekkelig å sette opp en daglig trigger for denne type e-poster.
Slett gamle e-poster automatisk
function deleteOldEmails() { var tråder = GmailApp.search('older_than:30d'); for (var i = 0; i < tråder.length; i++) { tråder[i].moveToTrash(); } }
Hvis du ikke ønsker å beholde gamle e-poster, kan du bruke dette skriptet til å slette e-poster som er eldre enn en viss periode. Skriptet her vil lete etter alle e-poster i Gmail som er eldre enn 30 dager og sende dem til papirkurven. Du kan redigere `older_than:30d`-delen for å spesifisere hvor gamle e-poster du vil slette, f.eks. `older_than:180d`.
For å slette e-poster fra en bestemt etikett, kan du redigere `Gmail.App.search`-delen til å inkludere etiketten, slik som dette:
`var tråder = GmailApp.search(«in:inbox older_than:30d»);`
For å automatisere prosessen, sett opp en trigger som kjører skriptet med jevne mellomrom. Avhengig av hvor gamle e-poster du vil slette, er en ukentlig eller månedlig trigger tilstrekkelig.
Lagre alle e-postadresser til Google Sheets
function getEmailAddresses() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheetName = "E-postadresser"; var sheet = ss.getSheetByName(sheetName); if (!sheet) { sheet = ss.insertSheet(sheetName); sheet.appendRow(["E-postadresse"]); } var tråder = GmailApp.getInboxThreads(); var epostadresser = []; var eksisterendeData = sheet.getDataRange().getValues(); if (eksisterendeData.length > 1) { var eksisterendeEpostadresser = eksisterendeData.slice(1).flat(); } else { var eksisterendeEpostadresser = []; } for (var i = 0; i < tråder.length; i++) { var meldinger = tråder[i].getMessages(); for (var j = 0; j < meldinger.length; j++) { var epostadresse = meldinger[j].getFrom(); if (epostadresser.indexOf(epostadresse) === -1 && eksisterendeEpostadresser.indexOf(epostadresse) === -1) { epostadresser.push(epostadresse); } } } for (var k = 0; k < epostadresser.length; k++) { sheet.appendRow([epostadresser[k]]); } }
Dette skriptet vil søke gjennom alle e-poster i Gmail og lagre navnet og e-postadressen til avsendere/mottakere i Google Sheets. Dette er nyttig for å lage en e-postliste for markedsføring eller en oversikt over alle som kontakter deg.
For å bruke dette skriptet, må du åpne Google Apps Script fra innsiden av Google Sheets, slik at det kan identifisere regnearket. Følg disse trinnene for å gjøre det første gang:
Åpne et nytt regneark i Google Sheets. Klikk på «Utvidelser» i menyen ovenfor og velg deretter «Apps Script». Dette åpner Google Apps Script, og du kan legge til og kjøre skriptet.
Skriptet vil opprette et nytt ark med navnet «E-postadresser» og lagre navn og e-postadresse i samme celle. Du trenger ikke åpne arket hver gang triggeren kjøres. Nye e-postadresser vil bli lagt til arket uten duplikater.
En daglig eller ukentlig trigger er tilstrekkelig, avhengig av hvor ofte du mottar e-poster fra nye avsendere.
Lagre e-postvedlegg til Google Disk automatisk
function onNewEmail(e) { var tråder = GmailApp.getInboxThreads(0, 1); var meldinger = tråder[0].getMessages(); var mappeNavn = "E-postvedlegg"; var mappeIterator = DriveApp.getFoldersByName(mappeNavn); var mappe; if (mappeIterator.hasNext()) { mappe = mappeIterator.next(); } else { mappe = DriveApp.createFolder(mappeNavn); } for (var i = 0; i < meldinger.length; i++) { var melding = meldinger[i]; if (melding.getAttachments().length > 0) { var vedlegg = melding.getAttachments(); for (var j = 0; j < vedlegg.length; j++) { var vedleggItem = vedlegg[j]; var vedleggHash = Utilities.base64Encode(Utilities.computeDigest(Utilities.DigestAlgorithm.MD5, vedleggItem.getBytes())); var eksisterendeFiler = mappe.getFiles(); var erDuplikat = false; while (eksisterendeFiler.hasNext()) { var eksisterendeFil = eksisterendeFiler.next(); var eksisterendeFilHash = Utilities.base64Encode(Utilities.computeDigest(Utilities.DigestAlgorithm.MD5, eksisterendeFil.getBlob().getBytes())); if (vedleggHash === eksisterendeFilHash) { erDuplikat = true; break; } } if (!erDuplikat) { mappe.createFile(vedleggItem); } } } } }
Dette er et veldig praktisk skript hvis du mottar viktige vedlegg ofte via e-post. Det vil ikke bare bevare vedlegg, men også organisere dem i en mer brukervennlig struktur.
Skriptet er designet for å kun fungere på nye e-poster du mottar etter at det er kjørt for første gang. Det oppretter automatisk en ny mappe kalt «E-postvedlegg» i Google Disk dersom den ikke allerede finnes. Skriptet bruker en MD5-hash-verdi basert på filinnhold for å unngå duplikater.
Hvis du ønsker å lagre vedlegg fra eksisterende e-poster, er det et modifisert skript nedenfor som følger de samme reglene, men lagrer vedlegg fra alle eksisterende e-poster. Det kan ta litt tid avhengig av antall vedlegg.
function saveAllAttachmentsToDrive() { var mappeNavn = "E-postvedlegg"; var mappeIterator = DriveApp.getFoldersByName(mappeNavn); var mappe; if (mappeIterator.hasNext()) { mappe = mappeIterator.next(); } else { mappe = DriveApp.createFolder(mappeNavn); } var tråder = GmailApp.getInboxThreads(); for (var i = 0; i < tråder.length; i++) { var meldinger = tråder[i].getMessages(); for (var j = 0; j < meldinger.length; j++) { var melding = meldinger[j]; var vedlegg = melding.getAttachments(); for (var k = 0; k < vedlegg.length; k++) { var vedleggItem = vedlegg[k]; var vedleggHash = Utilities.base64Encode(Utilities.computeDigest(Utilities.DigestAlgorithm.MD5, vedleggItem.getBytes())); var eksisterendeFiler = mappe.getFiles(); var erDuplikat = false; while (eksisterendeFiler.hasNext()) { var eksisterendeFil = eksisterendeFiler.next(); var eksisterendeFilHash = Utilities.base64Encode(Utilities.computeDigest(Utilities.DigestAlgorithm.MD5, eksisterendeFil.getBlob().getBytes())); if (vedleggHash === eksisterendeFilHash) { erDuplikat = true; break; } } if (!erDuplikat) { mappe.createFile(vedleggItem); } } } } }
Få daglige inspirerende sitater
function sendDailyQuoteEmail() { var apiNøkkel = 'DIN_API_NØKKEL'; var endepunkt="https://quotes.rest/qod"; var respons = UrlFetchApp.fetch(endepunkt, { headers: { 'X-TheySaidSo-Api-Secret': apiNøkkel } }); var data = JSON.parse(respons.getContentText()); var sitatInnhold = data.contents.quotes[0]; var sitat = sitatInnhold.quote; var forfatter = sitatInnhold.author; var mottaker="[email protected]"; var emne="Dagens sitat"; var melding = `Her er ditt daglige sitat:\n\n"${sitat}"\n\n- ${forfatter}`; GmailApp.sendEmail(mottaker, emne, melding); }
Selv om dette skriptet kanskje ikke har en direkte nytte i jobben eller e-postbehandlingen din, er det fint å få litt motivasjon rett i innboksen. Dette skriptet vil sende deg et inspirerende sitat fra They Said So API.
Først må du ha en personlig API-nøkkel fra They Said So. Du kan registrere en gratis konto på They Said So API-siden for å få nøkkelen. Den gir 5 gratis forespørsler, noe som er mer enn nok for et daglig sitat.
Når du har API-nøkkelen, bytt ut `DIN_API_NØKKEL` med din faktiske nøkkel. Du må også bytte ut [email protected] med din egen e-postadresse.
Sett deretter opp en trigger som kjører daglig. Å kjøre den oftere vil bare sende det samme sitatet på nytt.
Avslutningsvis
Jeg opplevde ingen problemer med å kjøre alle disse skriptene samtidig uten å nå den daglige kvoten. Du burde også oppleve det samme så lenge du ikke bruker for aggressive triggere. Sjekk skriptene regelmessig for å sikre at ingen av dem opplever feil.