Sådan automatiseres e-mail-opdateringer i et Google Sheet (Google Scripts)

Tl; dr: Sådan automatiseres e-mail-opdateringer ved at sende e-mail fra et Google Sheet med en trinvis forklaring af koden

Mange mennesker bruger Google Sheets til at samarbejde om et bredt antal emner. Mange bruger det til at administrere deres KPI'er. Ved du, hvad ingen ved, hvordan man gør det, ville være rigtig sej, hvis det var muligt?

Sender en e-mail-opdatering direkte fra Sheets!

Ja, det er rigtigt, du kan og personligt, jeg havde ingen anelse om, at du kunne gøre det indtil denne weekend. Jeg brugte det til at lave et sødt OKR-, PPP- og KPI-sporingsark, som derefter ville sende en opdatering af PPP'erne på ugentlig basis på et tidspunkt og dato, jeg valgte.

Jeg anbefaler, at du får det, så du kan se, hvordan det fungerer at sætte det hele i perspektiv.

Du kan få det her!

Nu vil dette være en funktionel klasse, så lad os bare komme ind i tingene.

Bemærk, jeg ved ikke, hvordan jeg skal kode. Jeg var nødt til at lære mig selv, hvordan man gør det. Så hvis du ikke kan kode, så stol på mig, kan du finde ud af det, som jeg gjorde!

Opsætningen

Arkopsætning

Åbn Google Sheets.

Navngiv arket 'System.'

Du vil tilføje et par datapunkter nu.

Skriv i den første række: E-mail-adresse, besked, person, e-mail-tælling og skriv 1 i E.

I den anden række tilføjes dataene

Det skal se sådan ud:

Lad mig forklare, hvad der sker her.

  • E-mail-adresse: Du indtaster e-mail-adresserne (eller link dem til e-mails i et andet ark, som jeg gjorde)
  • Besked: Jeg lavede en superkompleks formel til at formatere en e-mail, som jeg vil
  • Person: Jeg forbinder navnet på den person, der får e-mailen, så meddelelsen adresserer den til den pågældende person i kroppen
  • Antal e-mails: D1 er tekst, det gør ikke noget. E2 er hvor jeg har en tællefunktion, der fortæller mig, hvor mange mennesker der er beregnet til at få en e-mail. Dette er vigtigt, da koden, vi bruger, refererer til den!

Selvfølgelig kan du konfigurere dit ark anderledes og skrive din egen kode, men jeg vil lære dig, hvordan du gør det nøjagtige eksempel, jeg har gjort.

Script opsætning

Der er et skjult afsnit (i det mindste for mig) kaldet 'Scripteditor'. Du finder det under Værktøjer i menuen.

Åbn det, og det er her du skriver script. Der vil kun være tre linjer, når du åbner den for første gang.

Det er her du skal kopiere og indsætte koden. Lad os se på scriptet nu for at forstå, hvad det gør.

Manuskriptet

Her er et skærmbillede, så du kan se, hvordan det skal se ud:

Og nu er her koden, så du kan indsætte den i.

funktion sendEmails () {// Hent det ark, hvor dataene er, i arket 'system' var ark = SpreadsheetApp.getActiveSpreadsheet (). getSheetByName ("System") var startRow = 2; // Første række med data, der skal behandles, da der er en overskriftsrække var numRows = sheet.getRange (1,5) .getValue (); // Antallet af rækker, der skal behandles, indstilles ved en formel, der tæller rækker // Hent cellernes område A2: B6, hvor e-mails og meddelelser er var dataRange = ark.getRange (startRow, 1, numRows, 2) // Hent værdier for hver række i området, der skal indtastes i postsystemet var data = dataRange.getValues ​​(); // Dette behandler de e-mails, du vil sende til (i i data) {var række = data [i]; var e-mailadresse = række [0]; // Første kolonne er e-mail-adressen var meddelelse = række [1]; // Anden kolonne er meddelelsen var subject = "LÆS: Ugentlig PPP-opdatering"; // Dette er emnet for e-mailen // Dette analyserer dataene for den e-mail, der skal sendes MailApp.sendEmail (e-mailadresse, emne, besked); }}

Hvad er disse // ting?

Se disse “//”? Disse bruges til at kommentere. Brug af // betyder en computer til at "ignorere det her, det er til tålsomme mennesker."

Jeg har brugt dette kommenteringssystem til at forklare hver kodelinje til dig. Men lad os gennemgå det

Koden forklaret

funktion sendEmails () {
  • Dette skaber et navn på scriptet
// Hent det ark, hvor dataene er, i ark 'system'
var sheet = SpreadsheetApp.getActiveSpreadsheet (). getSheetByName ("System")
  • Dette definerer, hvor dataene kommer fra. Det kommer fra dig Systemark, ikke? Så dette er den interessante bit: .getSheetByName (“System”)
  • Du ser i slutningen, at det står "System", og jeg bad dig om at navngive arket System. Derfor. Hvis du ser skabelonscript i Google, trækkes det altid bare fra det 'aktive ark', hvilket er fint, hvis du kun har et ark og gør dine opdateringer manuelt. Men vi vil have flere ark og et automatiseret system. Så vi er nødt til at fortælle computeren, hvor PRÆCISK vi ønsker, at den skal gøre troldhåndværket
  • Så hvis du vil have, at dit ark skal kaldes noget andet, skal du bare ændre det til magi, som dette .getSheetByName ("magi")
startRow = 2; // Første række med data, der skal behandles, da der er en overskriftsrække
  • Se på arket. du skrev e-mail, navn osv. i række 1. Det er ikke nyttigt
  • Så du beder scriptet om at starte i anden række, da det er her, godbidderne er. Hvis dine e-mails var i række 3, ville du skrive række 3
var numRows = ark.getRange (1,5) .getValue (); // Antal rækker, der skal behandles, indstilles ved en formel, der tæller rækker
  • Dette er lidt mere funky. I arket indsatte du e-mail-antallet i E1
  • Den måde, manuskripter tænker på cellehenvisninger på, er række kolonne. Så E1 er 1, 5. Række et, kolonne 5.
  • Så se her: ark.getRange (1,5)
  • Dette siger kig i E1. Hvis dit e-mailantal var i A1, ville du skrive sheet.getRange (1,5)
// Hent området med celler A2: B6, hvor e-mails og meddelelser er
var dataRange = ark.getRange (startRow, 1, numRows, 2)
  • Så husk række, kolonne rækkefølge? Den længere måde at skrive dette på i denne funktion er: række, kolonne, antal rækker, antal kolonner
  • Denne funktion fortæller scripts det nøjagtige område, hvor de udtrækker dataene for at analysere og sende e-mails
  • Vi har kun brug for e-mail og besked til e-mail-automatoren. Så man skal fortælle manuskripter det. Den måde, vi gør det på, er at fortælle det, hvor man skal starte, og hvor man skal ende
  • sheet.getRange (række, kolonne, antal rækker, antal kolonner) bliver sheet.getRange (startRow, 1, numRows, 2)
  • Hvorfor er der navne her? Nå, vi definerede startRow og numRows ovenfor! 1 er den første kolonne, og 2 betyder de to første kolonner, hvor e-mail og meddelelse er placeret. Ja, du kunne gøre det anderledes. Har du spillet?
// Hent værdier for hver række i området, der skal indtastes i postsystemet
var data = dataRange.getValues ​​();
  • Dette fortæller bare, at scriptet skal stjæle dataene og gemme det som navnet 'data'
// Dette behandler de e-mails, du vil sende
for (i i data) {
var række = data [i];
  • Dette starter programmet (dybest set)
var e-mailadresse = række [0]; // Første kolonne er e-mail-adressen
  • Siger, at e-mailen er i den første række (0 er den første linje, hvad angår det i vores array)
var meddelelse = række [1]; // Anden kolonne er meddelelsen
  • Siger, at beskeden findes i den anden kolonne
var subject = "LÆS: Ugentlig PPP-opdatering"; // Dette er emnet for e-mailen
  • Her kan du indstille navnet på det e-mailemne, du vil sende!
  • Hvis du vil sende en e-mail med emnet "Tjek denne blog om, hvordan du automatiserer ark", vil du indtaste dette
  • var subject = “Tjek denne blog om, hvordan man automatiserer ark”;
// Dette analyserer dataene for den e-mail, der skal sendes
MailApp.sendEmail (e-mailadresse, emne, besked);
}
}
  • Dette angiver strukturen i en e-mail-funktion (MailApp), der udfører de smarte ting
  • Vi har fortalt det, at vi vil bruge e-mail-adressen, emnet og beskeden
  • "For (i i data) {" -stikkerne i starten af ​​processen opretter en løkke til at sende en e-mail til hver person (Tællefunktionen siger, hvor mange sløjfer der kører, f.eks. 2 ville betyde to sløjfer og to e-mails)

Det er den kode, du har brug for at lege med.

Jeg ved, at dette kan være meget at få dit hoved rundt, men det kan du også. Hvis du har brug for at ændre en kode for at gøre noget andet, skal du kontrollere dokumentationen. Ja, det ser ud til at forsøge at forstå et latin ord ved at blive bedt om at læse definitionen i en latin ordbog, men det er muligt

Dokumentationen er her: https://developers.google.com/apps-script/reference/mail/

Automatisering af afsendelsen af ​​e-mails

Nu brugte jeg aldre Googling-kode for at finde ud af, hvordan jeg sender e-mails på den dato og det tidspunkt, jeg ønskede. Det gjorde jeg… så indså jeg, at jeg ville have, at dette skulle fungere i ethvert land… så næste mission var at finde ud af, hvordan man tilpassede arket til hver persons tidszone! Det regnede jeg med… og så fandt jeg en rigtig dum, enkel måde at gøre det på! Gosh darn!

Lad os glemme den kode ... Bare gør dette.

Hvis du vil ændre timingen eller dagen, skal du gøre dette:

Du skal klikke på ur-knappen. Indstillingerne er lette at forstå:

Skift 'Hver fredag' til 'Hver mandag', hvis du vil sende mandag. Du kan indstille ting dagligt ved at ændre ukens timer. Du ændrer tidsknappen… ja, gæt du. Fele, tryk på Gem. Færdig. FML.

Autoriserer Gmail så det faktisk, som værker

Nu sender den e-mailen fra din Google-konto, så du skal give Google tilladelse til at gøre det for din konto. Du gør dette på følgende måde:

Arket gør meget af den tunge løft

Der er en masse smarte ting, du kan gøre, hvis du kan kode godt (jeg kan ikke og kan gøre det med Excel). Al formatering osv. Til meddelelsen udføres i Excel. Hvad jeg var nødt til at gøre for at gøre denne superdynamik er virkelig kompliceret og det vil tage en times tid at forklare, så det vil jeg ikke Så find ud af, hvordan du vil gøre brug af din nye supermagt nu.

Jeg håber, at det var nyttigt for dig at lære at automatisere e-mail-opdateringer! Hvis det var det, være social og del.