Kuinka automatisoida sähköpostipäivitykset Google-taulukossa (Google Scripts)

Tl; dr: Kuinka automatisoida sähköpostin päivitykset lähettämällä sähköpostia Google Sheetistä askel askeleelta koodin selityksellä

Monet ihmiset käyttävät Google Sheetsiä yhteistyöhön monissa aiheissa. Monet käyttävät sitä KPI-arvojen hallintaan. Tiedätkö mitä kukaan ei tiedä miten se olisi todella siistiä, jos se olisi mahdollista?

Lähetetään sähköpostiapäivitys suoraan Sheetsistä!

Kyllä, se on totta, että voit ja henkilökohtaisesti, minulla ei ollut aavistustakaan, että voisit tehdä sen vasta tänä viikonloppuna. Käytin sitä makean OKR-, PPP- ja KPI-seurantalehden laatimiseen, joka lähetti sitten päivityksen PPP: stä viikoittain valitsemanaan ajankohtana.

Suosittelen, että saat sen, jotta näet miten se toimii tämän kaiken näyttämiseksi näkökulmasta.

Voit hankkia sen täältä!

Nyt tästä tulee funktionaalinen luokka, joten astukaamme vain asioihin.

Huomaa, etten osaa koodata. Minun piti opettaa itselleni, miten tämä tehdään. Joten jos et voi koodata, luota minuun, voit selvittää sen kuten minä!

Asennus

Arkin asetukset

Avaa Google Sheets.

Nimeä arkki ”Järjestelmä”.

Haluat lisätä nyt muutaman datapisteen.

Kirjoita ensimmäiseen riviin: sähköpostiosoite, viesti, henkilö, sähköpostiosoite ja kirjoita 1 kohtaan E.

Lisää toiseen riviin tiedot

Sen pitäisi näyttää tältä:

Annan selittää mitä täällä tapahtuu.

  • Sähköpostiosoite: Kirjoita sähköpostiosoitteet (tai linkitä heidät toisen arkin sähköposteihin kuten minä)
  • Viesti: Tein erittäin monimutkaisen kaavan muotoilla sähköposti haluamallani tavalla
  • Henkilö: Yhdistän sähköpostin saaneen henkilön nimen, jotta viesti osoittaa sen kyseiselle henkilölle sähköpostin rungossa
  • Sähköpostiosoite: D1 on teksti, se ei tee mitään. E2: lla on minulla laskuritoiminto, joka kertoo kuinka monelle ihmiselle on tarkoitus saada sähköposti. Tämä on tärkeää, koska koodi, jota aiomme käyttää, viittaa siihen!

Tietysti voit asettaa arkin eri tavalla ja kirjoittaa oman koodisi, mutta opetan sinulle kuinka tehdä tarkka esimerkki, jonka olen tehnyt.

Komentosarjan asennus

Siellä on piilotettu osa (ainakin minulle) nimeltään "Komentosarjan muokkaus". Löydät sen valikon Työkalut-kohdasta.

Avaa se, ja sinä kirjoitat komentosarjan. Ainoa 3 riviä avataan ensimmäisen kerran.

Täällä aiot kopioida ja liittää koodi. Katsotaanpa nyt käsikirjoitusta ymmärtääksesi mitä se tekee.

Käsikirjoitus

Tässä on kuvakaappaus, jotta näet miltä sen pitäisi näyttää:

Ja nyt tässä on koodi, joten voit liittää sen sisään.

toiminto sendEmails () {// Hanki arkki, jossa tiedot ovat, arkkissa 'system' var sheet = SpreadsheetApp.getActiveSpreadsheet (). getSheetByName ("System") var startRow = 2; // Ensimmäinen käsiteltävä tietorivi, koska otsikkorivillä on var numRows = sheet.getRange (1,5) .getValue (); // Käsiteltävien rivien lukumäärä asetetaan kaavalla, joka laskee rivit // Hae solualue A2: B6, jossa sähköpostit ja viestit ovat var dataRange = sheet.getRange (startRow, 1, numRows, 2) // Hae arvot jokaiselle alueen riville syötettäväksi postijärjestelmään var data = dataRange.getValues ​​(); // Tämä käsittelee sähköpostit, jotka haluat lähettää (i tiedoissa) {var rivi = data [i]; var emailAddress = rivi [0]; // Ensimmäinen sarake on sähköpostiosoitteen var viesti = rivi [1]; // Toinen sarake on sanoma var Subject = "LUE: Viikoittainen PPP-päivitys"; // Tämä on sähköpostin aihe // Tämä jäsentää sähköpostin tiedot lähetettäväksi MailApp.sendEmail (sähköpostiosoite, aihe, viesti); }}

Mitä nämä ovat?

Näetkö ne ”//”? Näitä käytetään kommentoimaan. Käyttämällä // tarkoittaa tietokonetta 'ohita tämä juttu, se on tarkoitettu ihmisille, jotka ovat surullisia.'

Olen käyttänyt tätä kommentointijärjestelmää selittääksesi jokaisen koodirivin sinulle. Mutta käydään läpi se

Koodi selitettiin

toiminto sendEmails () {
  • Tämä luo skriptille nimen
// Hanki arkki, missä tiedot ovat, taulukossa 'järjestelmä'
var sheet = SpreadsheetApp.getActiveSpreadsheet (). getSheetByName ("System")
  • Tämä määrittelee mistä tiedot tulevat. Se tulee sinulta System sheet, eikö niin? Joten tämä on mielenkiintoinen bitti: .getSheetByName (“System”)
  • Näet lopussa, että se sanoo ”Järjestelmä”, ja minä käskin sinun nimetä arkki Järjestelmä. Siksi. Jos näet malliskriptin Googlessa, se vetää aina aktiivisesta arkista, mikä on hienoa, jos sinulla on vain yksi arkki ja tee päivitykset manuaalisesti. Mutta meillä on useita arkkeja ja automatisoitu järjestelmä. Joten meidän on kerrottava tietokoneelle, mihin TÄYSIN haluamme sen tekevän noitaveneitä
  • Joten jos haluat, että arkkiasi kutsutaan joku muu, muutat sen vain taikaksi, kuten tämä .getSheetByName (“maaginen”)
startRow = 2; // Ensimmäinen käsiteltävä tietorivi, koska otsikkorivi on olemassa
  • Katso arkki. kirjoitit sähköpostiviestin, nimen jne. riville 1. Se ei ole hyödyllistä
  • Joten sanot käskyn alkavan toiselta riviltä, ​​koska sieltä herkut ovat. Jos sähköpostisi olisivat rivillä 3, kirjoittaisit rivin 3
var numRows = sheet.getRange (1,5) .getValue (); // Käsiteltävien rivien lukumäärä asetetaan kaavalla, joka laskee rivit
  • Tämä on hieman funky. Arkkiin, jonka lisäsit sähköpostimäärän E1: ään
  • Tapa, jolla skriptit ajattelevat soluviittauksia, on Rivin sarake. Joten E1 on 1,5, rivi yksi, sarake 5.
  • Joten katso tästä: sheet.getRange (1,5)
  • Tämä sanoo katso E1: ssä. Jos sähköpostiosoitteesi lukumäärä oli A1, kirjoita sheet.getRange (1,5)
// Hae solualue A2: B6, missä sähköpostit ja viestit ovat
var dataRange = sheet.getRange (aloitusrivi, 1, numerot, 2)
  • Joten muistat Rivin, sarakkeen järjestyksen? Pidempi tapa tai kirjoittaa tämä tässä toiminnossa on: Rivi, Sarake, Rivien lukumäärä, Sarakkeiden lukumäärä
  • Tämä toiminto kertoo skripteille tarkan alueen, josta ne purkavat tiedot jäsentääksesi ja lähettääksesi sähköpostia
  • Tarvitsemme vain sähköpostin ja viestin sähköpostiautomaattille. Joten komentosarjoille on kerrottava se. Tapa, jolla teemme niin, kertoo sille, mistä aloittaa ja mistä loppuu
  • sheet.getRange (Rivi, sarake, rivien lukumäärä, sarakkeiden lukumäärä) muuttuu sheet.getRange (startRow, 1, numRows, 2)
  • Miksi täällä on nimiä? Määritimme hyvin startRow- ja numRows-kohdat yllä! 1 on ensimmäinen sarake ja 2 tarkoittaa kahta ensimmäistä saraketta, joissa sähköposti ja viesti sijaitsevat. Kyllä, voit tehdä sen eri tavalla. Onko näytelmä?
// Hae arvot jokaiselle alueen riville syötettäväksi postitusjärjestelmään
var data = dataRange.getValues ​​();
  • Tämä käskee vain komentosarjan varastaa tiedot ja tallentaa sen nimellä 'data'
// Tämä käsittelee lähettämäsi sähköpostit
(i tiedoissa) {
var rivi = data [i];
  • Tämä käynnistää ohjelman (periaatteessa)
var emailAddress = rivi [0]; // Ensimmäinen sarake on sähköpostiosoite
  • Sanoo, että sähköpostiosoite on ensimmäisellä rivillä (0 on ensimmäinen rivi siinä määrin kuin se koskee meidän ryhmäämme)
var viesti = rivi [1]; // Toinen sarake on viesti
  • Sanoo, että viesti on toisessa sarakkeessa
var Subject = "LUE: Viikoittainen PPP-päivitys"; // Tämä on sähköpostin aihe
  • Täällä voit asettaa lähettämäsi sähköpostin aiheen nimen!
  • Jos haluat lähettää sähköpostiviestin, jonka aiheena on “tarkista tämä blogi kuinka automatisoida taulukot”, kirjoita tämä
  • var subje = “tarkista tämä blogi kuinka automatisoida taulukot”;
// Tämä jäsentää lähetettävän sähköpostin tiedot
MailApp.sendEmail (sähköpostiosoite, aihe, viesti);
}
}
  • Tämä asettaa älykkäitä asioita hoitavan sähköpostitoiminnon (MailApp) rakenteen
  • Olemme sanoneet, että haluamme käyttää sähköpostiosoitetta, aihetta ja viestiä
  • Prosessin alussa olevat "for (i in data) {" -jutut luovat silmukan sähköpostin lähettämiseksi jokaiselle henkilölle (Laskenta-funktio kertoo kuinka monta silmukkaa käy, esim. 2 tarkoittaisi kahta silmukkaa ja kahta sähköpostia)

Se on koodi, jonka kanssa sinun täytyy pelata.

Tiedän, että tämä saattaa olla paljon saadaksesi pään ympäri, mutta voit. Jos joudut muuttamaan koodia tehdäksesi jotain muuta, tarkista sitten dokumentaatio. Kyllä, näyttää siltä, ​​että yritetään ymmärtää latinalaista sanaa käskettäessä lukemaan määritelmä latinalaisen sanakirjan avulla, mutta se on mahdollista

Asiakirjat ovat täällä: https://developers.google.com/apps-script/reference/mail/

Sähköpostien lähettämisen automatisointi

Nyt vietin iältään Googling-koodia selvittääksesi, kuinka lähettää sähköpostia sähköpostitse haluamallasi ajankohtana. Tein… silloin tajusin, että haluan tämän toimivan missä tahansa maassa… joten seuraava tehtävä oli selvittää, kuinka mukauttaa arkki kunkin henkilön aikavyöhykkeelle! Tajusin sen ... ja sitten löysin todella tyhmä, yksinkertainen tapa tehdä se! Hurska paskaa!

Unohdamme tämän koodin ... Tee vain tämä.

Jos haluat muuttaa ajoitusta tai päivää, tee tämä:

Sinun on napsautettava kellopainiketta. Asetukset ovat helposti ymmärrettäviä:

Muuta 'Joka perjantai' tilalle 'Joka maanantai', jos haluat lähettää maanantaina. Voit asettaa asiat päivittäin vaihtamalla viikkoajastimen. Voit muuttaa aikapainiketta… arvaa. Viila, paina Tallenna. Tehty. FML.

Valtuuttamalla Gmail niin, että se todella toimii, kuten toimii

Nyt se lähettää sähköpostin Google-tililtäsi, joten sinun on valtuutettava Google tekemään se tilillesi. Teet tämän seuraavasti:

Levy tekee paljon raskasta nostoa

Voit tehdä paljon hienoja juttuja, jos osaat koodata hyvää (en osaa ja osaa tehdä sen Excelillä). Kaikki viestin muotoilut jne. Tehdään Excelissä. Se mitä minun oli tehtävä saadakseni tämän erittäin dynaamisen, on todella monimutkainen ja sen selvittäminen vie tunnin, joten en aio tehdä Joten selvittää, miten haluat käyttää uutta supervoimaa nyt.

Toivon, että sähköpostiviestien automatisoinnin oppiminen oli sinulle hyödyllistä! Jos se oli, ole sosiaalinen ja jaa.