Kuidas automatiseerida e-posti värskendusi Google'i lehel (Google Scripts)

Tl; dr: kuidas automatiseerida e-posti värskendusi, saates Google Sheetilt e-kirju koos samm-sammult selgitatava koodiga

Paljud inimesed kasutavad Google'i arvutustabeleid, et teha koostööd paljudel teemadel. Paljud kasutavad seda oma KPI-de haldamiseks. Kas sa tead, mida keegi ei tea, kuidas seda teha oleks väga lahe, kui see oleks võimalik?

E-posti värskenduse saatmine otse arvutustabelitest!

Jah, see on õige, ja isiklikult ei olnud mul aimugi, et saaksite seda teha kuni selle nädalavahetuseni. Kasutasin seda magusate OKR-, PPP- ja KPI-jälgimislehtede koostamiseks, mis saadaks seejärel PPP-de värskendused igal nädalal minu valitud ajal ja kuupäeval.

Soovitan teil see hankida, et saaksite näha, kuidas see kõik perspektiivi aitab.

Selle saate siit!

Nüüd saab sellest funktsionaalne klass, nii et laskem lihtsalt asjadel vaeva näha.

Pange tähele, ma ei tea, kuidas kodeerida. Pidin ise seda õpetama. Nii et kui te ei saa koodi, usaldage mind, saate sellest aru saada nagu mina!

Seadistamine

Lehe seadistamine

Avage Google Sheets.

Pange leht nimeks Süsteem.

Soovite nüüd lisada mõned andmepunktid.

Esimesse ritta kirjutage: e-posti aadress, sõnum, isik, e-posti arv ja sisestage 1 sisse E.

Teises reas lisage andmed

See peaks välja nägema selline:

Las ma selgitan, mis siin toimub.

  • E-posti aadress: sisestate e-posti aadressid (või lingite need teise lehe e-kirjadega, nagu ma tegin)
  • Sõnum: tegin super keeruka valemi, et vormindada e-kiri vastavalt soovile
  • Isik: seostan meili saava inimese nime, nii et sõnum adresseerib selle isiku e-kirja põhiosas
  • E-kirjade arv: D1 on tekst, see ei tee midagi. E2-s on mul loendusfunktsioon, mis ütleb mulle, mitu inimest on mõeldud e-kirja saamiseks. See on oluline, kuna kood, mida hakkame kasutama, viitab sellele!

Muidugi, saate oma lehe teisiti seadistada ja oma koodi kirjutada, kuid ma õpetan teile, kuidas teha täpset näidet, mille olen teinud.

Skripti seadistamine

Seal on peidetud jaotis (vähemalt minu jaoks) nimega „Skriptiredaktor”. Selle leiate menüü Tööriistad alt.

Avage see ja siin kirjutate skripti. Esmakordsel avamisel on ainult 3 rida.

Siin saate koodi kopeerida ja kleepida. Vaatame nüüd skripti, et mõista, mida see teeb.

Skript

Siin on ekraanipilt, nii et näete, milline see peaks välja nägema:

Ja nüüd on siin kood, nii et saate selle sisse kleepida.

funktsioon sendEmails () {// Hankige leht, kus andmed asuvad, lehel 'system' var sheet = SpreadsheetApp.getActiveSpreadsheet (). getSheetByName ("System") var startRow = 2; // Esimene töödeldav andmerida, kuna seal on päise rida var numRows = sheet.getRange (1,5) .getValue (); // Töödeldavate ridade arv määratakse valemiga, mis arvutab ridu. // Tooge lahtrite vahemik A2: B6, kus e-kirjad ja sõnumid on var dataRange = sheet.getRange (startRow, 1, numRows, 2) // Väärtuste toomine iga vahemiku rea jaoks postisüsteemi sisestamiseks var data = dataRange.getValues ​​(); // See töötleb meilisõnumeid, mida soovite saata (i andmetes) {var rida = andmed [i]; var emailAddress = rida [0]; // Esimene veerg on e-posti aadress var message = rida [1]; // Teine veerg on sõnum var subjekt = "LUGEGE: Nädala PPP värskendus"; // See on e-posti teema // See parsib e-posti andmed, mille abil saadetakse MailApp.sendEmail (e-posti aadress, teema, kiri); }}

Mis need // asjad on?

Näete neid “//”? Neid kasutatakse kommenteerimiseks. Kasutades // tähendab arvutisse 'ignoreeri seda kraami, see on mõeldud inimeste meeletuks tegemiseks'.

Olen seda kommenteerimissüsteemi kasutanud, et selgitada teile iga koodirida. Kuid lähme läbi

Kood seletatud

funktsioon sendEmails () {
  • See loob skriptile nime
// Hankige leht, kus andmed asuvad, lehel 'süsteem'
var sheet = SpreadsheetApp.getActiveSpreadsheet (). getSheetByName ("System")
  • See määratleb, kust andmed pärinevad. See pärineb sinult Süsteemileht, eks? Nii et see on huvitav osa: .getSheetByName (“System”)
  • Näete selle lõpus: “Süsteem” ja ma käskisin teil nimetada leht Süsteem. Sellepärast. Kui näete Google'is malliskripti, tõmbab see alati aktiivsest lehest lahti, mis sobib, kui teil on ainult üks leht ja värskendused käsitsi. Kuid meil on mitu lehte ja automatiseeritud süsteem. Nii et me peame arvutisse ütlema, kuhu me täpselt tahame, et see nõiakunst teeks
  • Nii et kui soovite, et teie lehte kutsutaks millekski muuks, muutke see lihtsalt maagiaks, näiteks see .getSheetByName (“maagia”)
startRow = 2; // Esimene töödeldav andmete rida, kuna seal on päise rida
  • Vaata lehte. kirjutasite 1. reas e-kirja, nime jne. See pole kasulik
  • Nii et ütlete, et skript algaks teisest reast, sest seal on maiuspalad. Kui teie e-kirjad oleksid 3. reas, kirjutaksite 3. rea
var numRows = sheet.getRange (1,5) .getValue (); // Töödeldavate ridade arv on määratud valemiga, mis loendab ridu
  • See on natuke funky. Lehele, mille sisestasite meilisõnumite loendisse E1
  • See, kuidas skriptid mõtlevad lahtriviidete kohta, on ridaveerg. Nii et E1 on 1, 5. Esimene rida, 5. veerg.
  • Nii et vaata siit: sheet.getRange (1,5)
  • See ütleb, et vaata E1-s. Kui teie meiliaadress oli A1, kirjutage leht.getRange (1,5)
// Tooge lahtrite vahemik A2: B6, kus asuvad meilid ja teated
var dataRange = sheet.getRange (startRow, 1, numRows, 2)
  • Nii et mäletad järjekorda rida, veerud? Selle funktsiooni pikem viis või kirjutamine on järgmine: Rida, Veerg, Ridade arv, Veergude arv
  • See funktsioon annab skriptidele täpsed piirkonnad, kust nad andmed kaevandavad ja e-kirju saadavad
  • E-posti ja sõnumit vajame ainult meiliautomaatide jaoks. Nii et Skriptidele tuleb seda öelda. Kuidas me seda teeme, on öelda, kust alustada ja kus lõpetada
  • sheet.getRange (Rida, veerg, ridade arv, veergude arv) saab sheet.getRange (startRow, 1, numRows, 2)
  • Miks siin on nimesid? Noh, me defineerisime startRow ja numRows ülal! 1 on esimene veerg ja 2 tähendab kahte esimest veergu, kus asuvad e-kirjad ja sõnumid. Jah, sa saaksid seda teisiti teha. Kas teil on näidend?
// Tooge vahemiku iga rea ​​väärtused, et postitussüsteemi sisestada
var data = dataRange.getValues ​​();
  • See käsib skriptil lihtsalt andmeid varastada ja salvestada nimele andmed
// See töötleb meilisõnumeid, mida soovite saata
jaoks (i andmetes) {
var rida = andmed [i];
  • See käivitab programmi (põhimõtteliselt)
var emailAddress = rida [0]; // Esimene veerg on e-posti aadress
  • Ütleb, et e-kiri on esimeses reas (0 on esimene rida, kui see meie massiivi puudutab)
var teade = rida [1]; // Teine veerg on teade
  • Ütleb, et kiri on teises veerus
var subjekt = "LUGEGE: PPP iganädalane värskendus"; // See on e-kirja teema
  • Siin saate määrata e-posti teema nime, mille saadate!
  • Kui soovite saata meilisõnumi teemaga „vaadake seda ajaveebi, kuidas automatiseerida tabeleid, seda ajaveebi”, sisestage see
  • var subjekt = “vaadake seda ajaveebi, kuidas arvutustabeleid automatiseerida”;
// See parsib meilisõnumi andmed, mida saata
MailApp.sendEmail (emailAadress, teema, kiri);
}
}
  • See kirjeldab e-posti funktsiooni (MailApp) ülesehitust, mis teeb nutikat kraami
  • Oleme öelnud, et tahame kasutada e-posti aadressi, teemat ja sõnumit
  • Protsessi alguses olevad asjad, mille jaoks on „i (andmetes) {”, loovad silmuse igale inimesele meilisõnumi saatmiseks (loendusfunktsioon ütleb, mitu silmust töötab, nt 2 tähendaks kahte silmust ja kahte meiliaadressi)

See on kood, millega peate mängima.

Ma tean, et sellest võib palju kasu olla, et oma peas ringi käia, kuid saate siiski. Kui peate millegi muu jaoks koodi muutma, siis kontrollige dokumentatsiooni. Jah, see tundub nagu prooviks mõista ladina sõna, kui kästakse lugeda määratlust ladina sõnaraamatus, kuid see on võimalik

Dokumentatsioon on siin: https://developers.google.com/apps-script/reference/mail/

E-kirjade saatmise automatiseerimine

Nüüd veetsin ma Google'i koodi vanuses, et aru saada, kuidas e-kirju soovitud kuupäeval ja kellaajal saata. Tegin ... siis sain aru, et soovin, et see toimiks ükskõik millises riigis ... nii et järgmine ülesanne oli välja mõelda, kuidas kohandada lehte iga inimese ajavööndiga! Ma arvasin selle välja ... ja siis leidsin selle tõeliselt rumala, lihtsa viisi! Kurat küll!

Unustagem see kood ... Tehke lihtsalt seda.

Kui soovite muuta ajakava või päeva, tehke järgmist.

Peate klõpsama kella nuppu. Seadistused on hõlpsasti mõistetavad:

Kui soovite saata esmaspäeval, muutke „Igal reedel“ väärtuseks „Igal esmaspäeval“. Nädala taimerit muutes saate asju seada iga päev. Sa muudad ajanuppu ... noh sa arvad. Viidake, vajutage nuppu Salvesta. Valmis. FML.

Autoriseerides Gmaili, nii et see tegelikult toimib

Nüüd saadab ta meili teie Google'i kontolt, nii et peate Google'i volitama seda teie konto jaoks tegema. Teete seda järgmiselt:

Leht teeb palju rasket tõstmist

Häid asju saate teha, kui saate head koodi kodeerida (ma ei saa ja ma saan seda teha Exceli abil). Kõik sõnumi vormindamine jne toimub Excelis. See, mida ma pidin selle ülidünaamilise muutmiseks tegema, on tõesti keeruline ja selle selgitamiseks kulub tund, nii et ma ei kavatse Nii et mõelge, kuidas soovite oma uut suurriiki nüüd ära kasutada.

Loodan, et e-posti värskenduste automatiseerimise õppimine oli teile kasulik! Kui see oli, olge sotsiaalsed ja jagage.