Automatització de les actualitzacions de correu electrònic en un full de Google (Google Scripts)

Tl; dr: com automatitzar les actualitzacions de correu electrònic enviant un correu electrònic des d'un full de Google amb una explicació pas a pas del codi

Molta gent utilitza Fulls de càlcul de Google per col·laborar en una àmplia varietat de temes. Molts l’utilitzen per gestionar els seus KPI. Sabeu el que ningú sap fer? Seria molt maco si fos possible?

Envieu una actualització per correu electrònic directament des de Fulls de càlcul.

Sí, és cert, i personalment no tenia ni idea que es pogués fer fins aquest cap de setmana. L'he utilitzat per crear un bonic full de seguiment OKR, PPP i KPI, que després enviava una actualització setmanal dels PPP a la data i hora que he escollit.

Us recomano que el compreu perquè pugueu veure com funciona una vegada que tingueu tot això en perspectiva.

Ho podeu aconseguir aquí!

Bé, aquesta serà una classe funcional, així que comencem.

Nota: No puc codificar. Vaig haver d’ensenyar-me a fer-ho. Així que si no podeu confiar en mi, podeu esbrinar com ho vaig fer jo.

L'establiment

Configura el full

Obriu Fulls de càlcul de Google.

Poseu un nom a la fulla "Sistema".

Ara voleu afegir alguns punts de dades.

A la primera línia, escriviu: adreça de correu electrònic, missatge, persona, recompte de correu electrònic i introduïu 1 a E.

A la segona línia afegiu les dades

Hauria de ser així:

Deixeu-me explicar què passa aquí.

  • Adreça de correu electrònic: introduïu les adreces de correu electrònic (o les enllaceu a correus electrònics d’un altre full com jo)
  • Missatge: he creat una fórmula súper complexa per donar format a un correu electrònic tal com volia
  • Persona: enllaçaré el nom de la persona que rebrà el correu electrònic perquè el missatge s'adreci a aquesta persona al cos del correu electrònic
  • Recompte de correu electrònic: D1 és text i no fa res. A E2 tinc una funció de recompte que indica quantes persones han de rebre un correu electrònic. Això és important ja que el codi que estem fent servir fa referència a ell.

Per descomptat, podeu configurar el full de càlcul de manera diferent i escriure el vostre propi codi, però us ensenyaré a fer exactament el que vaig fer.

Configuració de scripts

Hi ha (almenys per a mi) una secció oculta anomenada "Editor de scripts". El podeu trobar al menú a "Extres".

Obriu-lo i aquí escrivireu el guió. Quan l'obriu per primera vegada, només mostra 3 línies.

Aquí copieu i enganxeu el codi. Vegem ara el guió per entendre què fa.

El guió

Aquí teniu una captura de pantalla perquè pugueu veure com hauria de ser:

I ara aquí teniu el codi que podeu enganxar.

function sendEmails () {// Retorna el full amb les dades del full var 'sheet' del sistema = SpreadsheetApp.getActiveSpreadsheet (). getSheetByName ("Sistema") var startRow = 2; // Primera línia de dades a processar, ja que hi havia una capçalera var numRows = sheet.getRange (1,5) .getValue (); // El nombre de línies a processar es determina mitjançant una fórmula que compta les línies. // Obteniu l’interval de cel·les A2: B6 on els correus electrònics i els missatges són var dataRange = sheet.getRange (startRow, 1, numRows, 2). // Obteniu valors per a cada fila de l’interval que cal introduir al sistema de correu var data = dataRange.getValues ​​(); // Això processarà els correus electrònics que vulgueu enviar (i en dades) {var fila = dades [i]; var emailAddress = fila [0]; // La primera columna és l'adreça de correu electrònic var message = fila [1]; // La segona columna és el missatge var subject = "LLEGIR: actualització setmanal de PPP"; // aquest és l'objecte del correu electrònic // analitza les dades del correu electrònic per enviar des de MailApp.sendEmail (adreça electrònica, assumpte, missatge); }}

Què són aquestes coses?

Veieu aquest "//"? S’utilitzen per fer comentaris. "//" per a un ordinador vol dir "Ignora aquestes coses, és per a persones dèbils".

He utilitzat aquest sistema de comentaris per explicar-vos cada línia de codi. Però passem-ho bé

El codi explica

Funció sendEmails () {
  • Això crearà un nom per a l'script
// Obteniu el full on es troben les dades del full var del sistema 'Sistema' = SpreadsheetApp.getActiveSpreadsheet (). getSheetByName ("Sistema")
  • Això defineix d’on provenen les dades. Prové del vostre full de sistema, oi? Per tant, això és l’interessant: .getSheetByName ("Sistema")
  • Al final veureu "Sistema" i us he dit que anomeneu el full "Sistema". Per tant. Quan veieu un script de plantilla a Google, només es treu del full actiu. Està bé si només teniu un full i feu les actualitzacions manualment. Però tindrem diversos fulls i un sistema automatitzat. Per tant, hem d’indicar a l’ordinador on volem exactament que faci la bruixeria
  • Per tant, si voleu que el full es digui una altra cosa, canvieu-lo per màgia, com ara .getSheetByName ("màgia").
startRow = 2; // Primera línia de dades a processar ja que hi ha una capçalera
  • Mireu el full. Heu escrit correu electrònic, nom, etc. a la línia 1. No és útil
  • Esteu dient al guió que comenci a la segona línia perquè aquí són els extres. Si el vostre correu electrònic estigués a la línia 3, estareu a la línia 3
var numRows = sheet.getRange (1,5) .getValue (); // El nombre de files a processar està determinat per una fórmula que compta les files
  • És una mica divertit. Al full heu inserit el nombre de correus electrònics a E1
  • La forma en què els scripts pensen sobre les referències de cel·les és la columna fila. Per tant, E1 és 1, 5a fila primera, columna 5.
  • Feu una ullada aquí: sheet.getRange (1.5)
  • Aquí teniu Look a E1. Si el vostre recompte de correu electrònic estigués a A1, escrivireu sheet.getRange (1.5).
// Obteniu l'interval de cel·les A2: B6 on es troben els missatges de correu electrònic i els missatges var dataRange = sheet.getRange (startRow, 1, numRows, 2)
  • Recordeu, doncs, l’ordre de les files i les columnes? El camí més llarg o escriure en aquesta funció és: fila, columna, nombre de files, nombre de columnes
  • Aquesta característica indica als scripts l'àrea exacta on extreure les dades per analitzar-les i enviar correus electrònics
  • Només necessitem el correu electrònic i el missatge de l’automatitzador de correu electrònic. Per tant, s’han d’informar els scripts sobre això. La nostra manera de fer-ho és dir per on començar i per on acabar
  • sheet.getRange (fila, columna, nombre de files, nombre de columnes) es converteix en sheet.getRange (startRow, 1, numRows, 2)
  • Per què hi ha noms aquí? Bé, hem definit startRow i numRows més amunt. 1 és la primera columna i 2 significa les dues primeres columnes, que són Correu electrònic i Missatge. Sí, ho podríeu fer d’una altra manera. Tens una peça
// Obteniu valors per a cada fila de l’interval que cal introduir al sistema de correu var data = dataRange.getValues ​​();
  • Això simplement indica a l'script que robi les dades i les guardi com a nom "Dades".
// Això processarà els correus electrònics que vulgueu enviar (i en dades) {var fila = dades [i];
  • Això iniciarà el programa (bàsicament)
var emailAddress = fila [0]; // La primera columna és l'adreça de correu electrònic
  • Diu que el correu electrònic és a la primera línia (0 és la primera línia pel que fa a la nostra matriu)
var missatge = fila [1]; // La segona columna és el missatge
  • Diu que el missatge es troba a la segona columna
var subject = "LLEGIR: actualització setmanal de PPP"; // Aquest és el tema del correu electrònic
  • Aquí podeu introduir el nom de l’assumpte del correu electrònic que voleu enviar.
  • Si voleu enviar un correu electrònic amb l'assumpte "Més informació sobre com automatitzar fulls" a l'assumpte, incloeu-lo
  • var subject = "Aquest bloc us explica com automatitzar fulls";
// S’analitzaran les dades que ha d’enviar el correu electrònic MailApp.sendEmail (emailAddress, assumpte, missatge); }}
  • Això defineix l'estructura en una funció de correu electrònic (MailApp) que realitza les tasques intel·ligents
  • Ens van dir que voldríem utilitzar l'adreça de correu electrònic, l'assumpte i el missatge
  • El material "for (i in data) {" al començament del procés crea un bucle per enviar un correu electrònic a cada persona.

Has de jugar amb aquest codi.

Sé que això pot suposar una gran quantitat de problemes, però podeu fer-ho. Si heu de canviar el codi per fer una altra cosa, consulteu la documentació. Sí, sembla intentar entendre una paraula llatina dient-li que llegeixi la definició en un diccionari llatí, però és possible

Podeu trobar la documentació aquí: https://developers.google.com/apps-script/reference/mail/

Automatització de l'enviament de correus electrònics

Ara he passat un etern codi de Google per esbrinar com enviar missatges de correu electrònic en la data i hora que volia. Ho vaig fer ... llavors em vaig adonar que volia fer això a tots els països. La següent tasca va ser esbrinar com ajustar el full a la zona horària de cada persona. Ho vaig descobrir ... i després vaig trobar una manera molt estúpida i senzilla de fer-ho. Vaja, caram!

Oblidem aquest codi ... només cal fer-ho.

Si voleu canviar l'hora o el dia, feu el següent:

Heu de fer clic al botó del rellotge. La configuració és fàcil d’entendre:

Canvieu "Tots els divendres" a "Tots els dilluns" si voleu enviar el dilluns. Podeu canviar la configuració diàriament canviant el temporitzador setmanal. Canvieu el botó d’hora ... bé, suposo. Violí, toca desar. Fet. FML.

Per tant, l’autorització de Gmail funciona de manera habitual

Ara el correu electrònic s’enviarà des del vostre compte de Google. Per tant, heu d’autoritzar Google a fer això pel vostre compte. Ho fas així:

La fulla fa molt pesat

Hi ha un munt de coses fantàstiques que podeu fer si esteu bé programant (no ho puc fer i no puc fer-ho amb Excel). Tot el format, etc. del missatge es realitza a Excel. El que havia de fer per aconseguir aquesta súper dinàmica és realment complicat i trigaria una hora a explicar-ho. Així que no ho faré. Penseu en com us agradaria utilitzar la vostra nova superpotència ara.

Espero que hàgiu après a automatitzar les actualitzacions de correu electrònic. Si és així, sigueu socials i compartiu.